- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常见错误与程序调试.ppt
;;要真正学好C、用好C并不容易,“灵活”固然是好事,但也使人难以掌握,尤其是初学者往往出了错还不知怎么回事。C编译程序对语法的检查不如其他高级语言那样严格(这是为了给程序人员留下“灵活”的余地)。因此,往往要由程序设计者自己设法保证程序的正确性。调试一个C程序要比调试一个PASCAL或FORTRAN程序更困难一些。需要不断积累经验,提高程序设计和调试程序的水平。
C语言有些语法规定和其他高级语言不同,学习过其他高级语言的读者往往按照使用其他高级语言的习惯来写C程序,这也是出错的一个原因。
;14.1 常见错误分析
下面将初学者在学习和使用C语言(不包括C++)时容易犯的错误列举出来,以起提醒的作用。这些内容在以前各章中大多已谈到,为便于查阅,在本章中集中列举,供初学者参考,以此为鉴。
(1) 忘记定义变量。如:
main( )
{x=3;
y=6;
printf(%d\n ,x+y);
};
(2) 输入输出的数据的类型与所用格式说明符不一致。
例如,若a已定义为整型,b已定义为实型。;(3) 未注意int型数据的数值范围。
一般微型计算机上使用的C编译系统,对一个整型数据分配两个字节。因此一个整数的范围为;(4) 输入变量时忘记使用地址符。如:
scanf(%d%d,a,b);
这是许多初学者刚学习C语言时一个常见的疏忽,或者说是习惯性的错误,因为在其他语言中在输入时只需写出变量名即可,而C语言要求指明“向哪个地址标识的单元送值”。应写成scanf(%d%d,a,b);
(5) 输入时数据的组织与要求不符。
用scanf函数输入数据,应注意如何组织输入; 数据。假如有以下scanf函数:
scanf(%d%d,a,b);
有人按下面的方法输入数据:
3,4
这是错的。数据间应该用空格来分隔。读者可以用
printf(%d%d,a,b);
来验证一下。应该用以下方法输入:
34
如果scanf函数为
scanf(%d,%d,a,b);
对scanf函数中格式字符串中除了格式说明符外,; 对其他字符必须按原样输入。因此,应按以下方法输入:
3,4
此时如果用“34”反而错了。还应注意,不能企图用
scanf(input a b:%d,%d,a,b);
想在屏幕上显示一行信息:
input a b:
然后在其后输入a和b的值,这是不行的。这是由于有的读者以为scanf具有BASIC语言中的INPUT语句的功能(先输出一个字符串,再输入变量的值)。如果想在屏幕上得到所需的提示信息,可以另加一个printf函数语句:printf(input a b:);;scanf(%d,%d,a,b);
(6) 误把“=”作为“等于”比较符。
C编译系统将(a=b)作为赋值表达式处理,将b的值赋给a,然后判断a的值是否零,若为非零,则作为“真”;若为零作为假。如果a的值为3,b的值为4,; a≠b,按原意不应输出“ae q u a lt ob”。而现在先将b的值赋给a,a也为4,赋值表达式的值为4。if语句中的表达式值为真(非零),因此输出“ae q u a lt o b”。
这种错误在编译时是检查不出来的,但运行结果往往是错的。而且由于习惯的影响,程序设计者自己往往也不易发觉。
(7) 语句后面漏分号。
C语言规定语句末尾必须有分号。分号是C语句不可缺少的一部分。这也是和其他语言不同的。有的初学者往往忘记写这一分号。如:;a=3
b=4
编译时,编译程序在“a=3”后面未发现分号,就把下一行“b=4”也作为上一行的语句的一部分,这就出现语法错误。有时编译时指出某行有错,但在该行上并未发现错误,应该检查上一行是否漏了分号。
如果用复合语句,有的学过PASCAL语言的读者往往漏写最后一个语句的分号,如:
{t=a;
a=b;
b=t
};在PASCAL中分号是两个语句间的分隔符而不是语句的一部分,而在C中,没有分号的就不是语句。
(8) 在不该加分号的地方加了分号。
例如:
if(a>b);
printf(a is larger than b\n);;(9) 对应该有花括弧的复合语句,忘记加花括弧。
如:
sum=0;
i=1;
while(i<=100)
sum=sum+i;
i++;
本意是实现1+2+…+100,即∑i。但上面的语句只是重复了sum+1的操作,而且循环永不终止。因为i的值始终没有改变。错误在于没有写成复合语句形式。因此while语句的范围到其后第一个分号为止。语句“i++;”不属于循环体范围之内。; (10) 括弧不配对。
当一个语句中使用多层括弧时常出现这类错误,纯属粗心所致。如:while((c=
您可能关注的文档
- 离心通风机设计毕业论文.doc
- 企业会计准则实施问题及案例分析讲义2.ppt
- 气瓶充装许可规则 TSG R4001-2006.doc
- 罗宾斯《组织行为学》第12版_ppt资料章节01.ppt
- 清华大学传播学第4讲 传播模式(上).ppt
- 解剖原子课件.ppt
- 美国宏观环境分析.ppt
- 抗真菌药-药理学-43.ppt
- 入党程序和手续_课件.ppt
- 气质 杨青春.ppt
- 2024自考专业(建筑工程)自我提分评估及参考答案详解(夺分金卷).docx
- 2024自考专业(建筑工程)能力提升B卷题库(各地真题)附答案详解.docx
- 2025年学生实习总结报告范文.docx
- 边缘计算AI推理芯片项目营销计划书.docx
- 2024自考专业(建筑工程)能力提升B卷题库(各地真题)附答案详解.docx
- 2024自考专业(建筑工程)能力提升B卷题库含答案详解【完整版】.docx
- 2024自考专业(建筑工程)能力提升B卷题库及参考答案详解【突破训练】.docx
- 2024自考专业(建筑工程)能力提升B卷题库【考点提分】附答案详解.docx
- 小学英语教师听课心得体会.pptx
- 2024自考专业(建筑工程)能力提升B卷题库及答案详解一套.docx
最近下载
- DB37∕T 242-2021 建筑消防设施检测技术规程.docx
- PE管材验收标准(SDR17.6).docx VIP
- 复旦大学《计算机体系结构》期末考试两套试卷(含答案).pdf VIP
- 中国近现代史纲要知到课后答案智慧树章节测试答案2025年春海南大学.docx VIP
- 形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx VIP
- 大学《地震工程学》课程课件.pptx
- 2024年二建继续教育-基于建筑信息模型、虚拟施工及网络的项目管理理论及实践1、2答案.docx VIP
- 2024年二建继续教育-剖析价值工程及如何运用价值工程优选设计方案1、2答案.docx VIP
- 茶颜悦色案例分析.pptx VIP
- yolov9论文中文翻译.docx VIP
文档评论(0)