01-C/C++题目总结

题目一

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

#define a 10

int main(void) {
	cout << a << endl;
	func();
	cout << a << endl;

	system("pause");
	return 0;
}

void func() {
	{
#undef a
#define a 50
	}
}

预编译指令不受作用域限制。看看编辑器给他的位置,永远放在了行首!

 

题目二

sizeof(a)等于:12。

class a {
public:
	virtual void funa( );
	virtual void funb( );
	void fun( );
	static void fund( );
	static int si;
private:
	int i;
	char c;
};

1. 类中的虚函数是使用虚函数指针来指向虚函数表的,类中值保存了虚函数指针指向虚函数表,这个指针是唯一的。
2. 因为类的内存对齐,char也占4个字节。

题目三

class A {
...
private:
     int a;
public:
     const int b;
     float* &c;
     static const char* d;
     static double* e;
};

则构造函数中,成员变量一定要通过初始化列表来初始化的是     B      

A. a b c        B. b c        C. b c d e        D. b c d        E. b        F. c

题目四

4.对一棵二叉树进行后续遍历,其输出结果为A,B,C,这样的二叉树有     D      棵。
A. 1      B. 2      C. 3      D. 5      E. 7      F. 9  

*题目五

对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是    C     排序。

A. 选择排序      B. 快速排序      C. 希尔排序      D.冒泡排序

 

*题目六

芯片测试:有2k块芯片,已知好芯片比坏芯片多.请设计算法从其中找出一片 好芯片,说明你所用的比较次数上限. 其中:好芯片和其它芯片比较时,能正确给出另一块芯片是好还是坏;坏芯片和其它芯片比较时,会随机的给出好或是坏。

题目七

有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层???

以下解析转载自:
https://blog.csdn.net/xiaohai0504/article/details/6941467 

      投掷次数分布不均。按最坏情况估计,这种方法就多做了几次。为了使最坏情况的投掷数最小,我们希望无论临界段在哪里,总的投掷数都不变,也就是说投掷数均匀分布。
      接下来的解决方案就很容易想出了:既然第一步(确定临界段)的投掷数增加不可避免,我们就让第二步(确定临界层)的投掷数随着第一步的次数增加而减少。第一步的投掷数是一次一次增加的,那就让第二步的投掷数一次一次减少。假设第一次投掷的层数是f,转化成数学模型,就是要求f+(f-1)+...+2+1>=99,即f(f+1)/2>=99(第一次测试点选择100层是无意义的,必然会碎,所以无任何测试价值,所以第一次测试点k是1-99中的一个数),解出结果等于14。丢下第一颗鸡蛋的楼层就分别是 14 , 27 , 39 , 50 , 60 , 69 , 77 ,84 , 90 , 95 , 99 。

题目八

char a[] = {"hello world"};
cout << sizeof(a) << endl; // 12
cout << strlen(a) << endl; // 11

char b[] = {'a', 'b', 'c'};
cout << sizeof(b) << endl; // 3
cout << strlen(b) << endl; // 3


 

猜你喜欢

转载自blog.csdn.net/Hello_MyDream/article/details/88093204