C++经典面试题(八)
2015-06-28 15:11
274 查看
最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。
一是从来没有这个意识,二是没有认真的梳理下。
下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!
71.写出打印结果
【标准答案】4
72.写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n。
73.字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
【参考答案】指针变量也占用内存单元,而且所有指针变量占用内存单元的数量都是相同的。
就是说,不管是指向何种对象的指针变量,它们占用内存的字节数都是一样的,并且要足够把程序中所能用到的最大地址表示出来(通常是一个机器字长)。
74.以下三条输出语句分别输出什么?
【参考答案】分别输出false,false,true。
str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;
str3和str4同上,只是按const语义,它们所指向的数据区不能修改。
str5和str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。
75.以下代码有什么问题?
【参考答案】三元表达式“?:”问号后面的两个操作数必须为同一类型。
76.以下代码能够编译通过吗,为什么?
【标准答案】str2定义出错,size2非编译器期间常量,而数组定义要求长度必须为编译期常量。
77.以下代码中的输出语句输出0吗,为什么?
【标准答案】不能。
在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。
注:最后输出的是一个随机值
78.How do you code an infinite loop in Cplus plus ?
【参考答案】
while(1){}
for(;1;)
79.What are the values of a, b, and c after the following instructions:
【标准答案】a=6,b=7,c=12
80.在排序方法中,关键码比较次数与记录地初始排列无关的是()
A. Shell排序
B. 归并排序
C. 直接插入排序
D. 选择排序
【标准答案】D
无论初始排列的有序程度如何,选择排序 都要和每个记录进行比较
未完。。。待续(*^_v_^*)
一是从来没有这个意识,二是没有认真的梳理下。
下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!
71.写出打印结果
unsigned short array[]={1,2,3,4,5,6,7}; int i = 3; *(array + i) =
【标准答案】4
72.写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n。
long fn(long n) { if(n <= 0) { printf("error: n must > 0"); exit(1); } if(0 == n % 2) return (n / 2) * (-1); else return (n / 2) * (-1) + n; }
73.字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
【参考答案】指针变量也占用内存单元,而且所有指针变量占用内存单元的数量都是相同的。
就是说,不管是指向何种对象的指针变量,它们占用内存的字节数都是一样的,并且要足够把程序中所能用到的最大地址表示出来(通常是一个机器字长)。
74.以下三条输出语句分别输出什么?
char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc"; const char* str6 = "abc"; cout << boolalpha << ( str1==str2 ) << endl; // 输出什么? cout << boolalpha << ( str3==str4 ) << endl; // 输出什么? cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?
【参考答案】分别输出false,false,true。
str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;
str3和str4同上,只是按const语义,它们所指向的数据区不能修改。
str5和str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。
75.以下代码有什么问题?
cout << (true?1:"1") << endl;
【参考答案】三元表达式“?:”问号后面的两个操作数必须为同一类型。
76.以下代码能够编译通过吗,为什么?
unsigned int const size1 = 2; char str1[ size1 ]; unsigned int temp = 0; cin >> temp; unsigned int const size2 = temp; char str2[ size2 ];
【标准答案】str2定义出错,size2非编译器期间常量,而数组定义要求长度必须为编译期常量。
77.以下代码中的输出语句输出0吗,为什么?
struct CLS { int m_i; CLS( int i ) : m_i(i) {} CLS() { CLS(0); } }; CLS obj; cout << obj.m_i << endl;
【标准答案】不能。
在默认构造函数内部再调用带参的构造函数属用户行为而非编译器行为,亦即仅执行函数调用,而不会执行其后的初始化表达式。只有在生成对象时,初始化表达式才会随相应的构造函数一起调用。
注:最后输出的是一个随机值
78.How do you code an infinite loop in Cplus plus ?
【参考答案】
while(1){}
for(;1;)
79.What are the values of a, b, and c after the following instructions:
int a=5, b=7, c; c = a+++b;
【标准答案】a=6,b=7,c=12
80.在排序方法中,关键码比较次数与记录地初始排列无关的是()
A. Shell排序
B. 归并排序
C. 直接插入排序
D. 选择排序
【标准答案】D
无论初始排列的有序程度如何,选择排序 都要和每个记录进行比较
未完。。。待续(*^_v_^*)
相关文章推荐