- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第19 章 程序改错实战题
很多程序员在学校进行专业学习的阶段就开始就熟悉程序改错题了。无论是在学校还
是各种等级、证书考试中,还是求职的面试中,程序改错题都是被习惯考查的题目。程序
改错题考查的是程序员的各项基本功,编程注意事项和变成习惯。这一部分题目练习的主
要目的就是熟能生巧。考查的时候,求职者如果回答不好,甚至可能会出现将正确的程序
部分修改错误的情况,因此积累程序改错题的经验也是很重要的。
面试题279 找出下面代码中的所有错误
以下代码是把一个字符串倒序,如"abcd"倒序后变为"dcba"。
#include "string.h"
main()
{
char src="hello,world"; //定义字符串
*
char dest=NULL;
*
int len=strlen(src);
dest=(char )malloc(len); //分配内存空间
*
char d=dest;
*
char s=src[len];
*
while(len--!=0)
d++=s--;
printf("%s",dest); //输出结果
return 0;
}
【考题分析】
面试官首先考核应聘人员是否能看懂这段程序,当看到里面应用的函数时,如果经验
比较丰富的能看到可能需要的头文件没有引入,而如果连程序都看不懂,则此题非常难。
【答案】
头部还要加上:
#include <stdio.h>
面试题280 找出下面代码中的所有错误
int main()
{
char src = "hello,world";
*
int len = strlen(src);
char dest = (char )malloc((len+1) sizeof(char)); //要为\0分配一个空间
* * *
第19 章 程序改错实战题
char d = dest;
*
char s = &src[len-1]; //指向最后一个字符
*
while( len-- != 0 )
d++= s--;
* *
*d = 0; //尾部要加\0
printf("%s\n",dest);
free(dest); //使用完以后,应当释放空间,以免造成内存汇泄露
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void getmemory(char p)
*
{
p=(char *) malloc(100);
strcpy(p,"hello world");
}
int main( )
{
char str=NULL;
*
getmemory(str);
printf("%s/n",str); //输出
free(str);
return 0;
}
【分析与答案】
会造成程序崩溃,具体如下所示:
(1)getmemory 中的malloc 不能返回动态内存。
(2 )free()对str 操作很危险。
本题如果回答的很好,
文档评论(0)