题目一
#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