C / C++ 经典笔试题剖析(一)

来源:互联网 发布:大数据的4v特征包括 编辑:程序博客网 时间:2024/05/20 05:06

 

试题1:

 

 

试题2:

 

 

试题3:

 

 

解答:
test1: 字符串str1需要11个字节才能存放下(包括末尾的'/0'),而string只有10个字节的空间,strcpy会导致数组越界

test2: 如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分

test3: if(strlen(str1) <= 10)应改为if(strlen(str1) < 10),因为strlen的结果未统计'/0'所占用的1个字节

 

 

剖析:

考查对基本功的掌握:
(1)字符串以'/0'结尾;
(2)对数组越界把握的敏感度;
(3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:

 

2分

 

 

4分

 

 

7分

 

 

10分

 

 

 

对strlen的掌握,它没有包括字符串末尾的'/0'。
读者看了不同分值的strcpy版本,应该也可以写出一个10分的strlen函数了,完美的版本为:

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

原创粉丝点击