程序员宝典第19章.pdf

程序员宝典第19章.pdf

ID:57773720

大小:316.92 KB

页数:11页

时间:2020-03-31

程序员宝典第19章.pdf_第1页
程序员宝典第19章.pdf_第2页
程序员宝典第19章.pdf_第3页
程序员宝典第19章.pdf_第4页
程序员宝典第19章.pdf_第5页
资源描述:

《程序员宝典第19章.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第19章程序改错实战题很多程序员在学校进行专业学习的阶段就开始就熟悉程序改错题了。无论是在学校还是各种等级、证书考试中,还是求职的面试中,程序改错题都是被习惯考查的题目。程序改错题考查的是程序员的各项基本功,编程注意事项和变成习惯。这一部分题目练习的主要目的就是熟能生巧。考查的时候,求职者如果回答不好,甚至可能会出现将正确的程序部分修改错误的情况,因此积累程序改错题的经验也是很重要的。面试题279找出下面代码中的所有错误以下代码是把一个字符串倒序,如"abcd"倒序后变为"dcba"。#include"string.h"main(){char*src="hello,

2、world";//定义字符串char*dest=NULL;intlen=strlen(src);dest=(char*)malloc(len);//分配内存空间char*d=dest;char*s=src[len];while(len--!=0)d++=s--;printf("%s",dest);//输出结果return0;}【考题分析】面试官首先考核应聘人员是否能看懂这段程序,当看到里面应用的函数时,如果经验比较丰富的能看到可能需要的头文件没有引入,而如果连程序都看不懂,则此题非常难。【答案】头部还要加上:#include面试题280找出下面代码

3、中的所有错误intmain(){char*src="hello,world";intlen=strlen(src);char*dest=(char*)malloc((len+1)*sizeof(char));//要为分配一个空间第19章程序改错实战题char*d=dest;char*s=&src[len-1];//指向最后一个字符while(len--!=0)*d++=*s--;*d=0;//尾部要加printf("%s",dest);free(dest);//使用完以后,应当释放空间,以免造成内存汇泄露return0;}#include

4、>#includevoidgetmemory(char*p){p=(char*)malloc(100);strcpy(p,"helloworld");}intmain(){char*str=NULL;getmemory(str);printf("%s/n",str);//输出free(str);return0;}【分析与答案】会造成程序崩溃,具体如下所示:(1)getmemory中的malloc不能返回动态内存。(2)free()对str操作很危险。本题如果回答的很好,面试官会非常满意,因为程序的安全性是每个公司必须首先考虑的。面试题281找出下

5、面代码的错误voidtest1(){charstring[10];char*str1="0123456789";strcpy(string,str1);}【考题分析】这个题目考查的是对基础知识的掌握:字符串以‘’结尾。面试官通过这个了解应聘者是否足够细心。【答案】在这个题目中,字符串str1需要11个字节才能存放下(包括末尾的‘’),而string只有10个字节的空间,strcpy会导致数组越界。面试题282找出下面代码的错误voidtest2()·267·第4篇C/C++面试题实战解析{charstring[10],str1[10];inti;for(i=

6、0;i<10;i++){str1[i]='a';}strcpy(string,str1);}【考题分析】这个题目考查的是对基础知识的掌握:对数组越界把握的敏感度。【答案】对于这个试题,如果应聘者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string,str1)调用使得从str1内存拷贝到string内存拷贝的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的可以给满分10分。面试题283找出下面代码的错误voidtest3(char*str1){charstring[10];if(strlen(str1)<=1

7、0){strcpy(string,str1);}}【考题分析】库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:(1)voidstrcpy(char*strDest,char*strSrc){while((*strDest++=*strSrc++)!=‘’);}(2)voidstrcpy(char*strDest,constchar*strSrc)//将源字符串加const,表明其为输入参数,加2分{while((*strDest++=*strSrc++)!=‘’);}(3)voidstrcpy(c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。