版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、来源:C语言中文网 人围观 C编译的程序对语法检查并不象 灵活的余地”, 但还是由于这个 4、忽略了“ =”与 在许多高级语言中, 可以写 if (a=3) then , 但C语言中,“=” if (a=3) a=b; 是赋值运算符,“ =”是关系运算符。如: C语言编程时常犯十八个错误 作者:admin发布时间:2012-04-28 18:53 QQ空间新浪微博人人网腾讯微博豆瓣12 C语言的最大特点是:功能强、使用方便灵活。 其它高级语言那么严格, 这就给编程人员留下 灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些 连自己都不知道错在哪里的错误。 看着有错的程序,
2、不知该如何改起, 本人通过 对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。 1、书写标识符时,忽略了大小写字母的区别。 main() int a=5; printf(%d,A); 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母 和小写字母是两个不同的字符。 习惯上,符号常量名用大写, 变量名用小写表示, 以增加可读性。 2、忽略了变量的类型,进行了不合法的运算。 main() float a,b; printf(%d,a%b); %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型 变量则不允许进行“求余”运算。 3、将字符常量与字
3、符串常量混淆。 char c; c=a; 在这里就混淆了字符常量与字符串常量, 字符常量是由一对单引号括起来的单个 字符,字符串常量是一对双引号括起来的字符序列。 C规定以“ ”作字符串结 束标志,它是由系统自动加上的,所以字符串“ a”实际上包含两个字符: a 和 0 ,而把它赋给一个字符变量是不行的。 =”的区别。 用“二”符号作为关系运算符“等于”。如在 BASIC程序中前者是进行比较, a 是否和 3 相等,后者表示如果 a 和 3 相等,把 b 值赋给 a。 由于习惯问题,初学者往往会犯这样的错误。 5、忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=
4、2 编译时,编译程序在“ a=1 ”后面没发现分号,就把下一行“ b=2”也作为上一行 语句的一部分, 这就会出现语法错误。 改错时, 有时在被指出有错的一行中未发 现错误,就需要看一下上一行是否漏掉了分号。 z=x+y; t=z/100; printf(%f,t); 对于复合语句来说,最后一个语句中最后的分号不能忽略不写 (这是和 PASCA不同的)。 6、多加分号。 对于一个复合语句,如: z=x+y; t=z/100; printf(%f,t); ; 复合语句的花括号后不应再加分号,否则将会画蛇添足。又如: if (a%3=0); I+; 1。再如: 本是如果3整除a,则I加1。但由于i
5、f (a%3=0)后多加了分号,贝U if语句到 此结束,程序将执行I+语句,不论3是否整除a,I都将自动加 for (I=0;I5;I+); scanf(%d, printf(%d,x); 后多加了一个 a、b 的值存进 本意是先后输入 5 个数,每输入一个数后再将它输出。由于 for() 分号,使循环体变为空语句,此时只能输入一个数并输出它。 7、输入变量时忘记加地址运算符“ scanf(%d%d,a,b); 这是不合法的。 Scanf 函数的作用是:按照 a、b 在内存的地址将 去。“ 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3 , 4 输入数据时,在两个数据之间以一
6、个或多个空格间隔,也可用回车键,跳格键 tab 。 scan f(%d,%d, C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输 入数据时应输入与这些字符相同的字符。下面输入是合法的: 3 , 4 此时不用逗号而用空格或其它字符是不对的。 3 4 3: 4 又如: scanf(a=%d,b=%d, 输入应如以下形式: a=3,b=4 9、输入字符的格式与要求不一致。 在用“ %c格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。 scanf(%c%c%c, 如输入 a b c 字符“a”送给c1,字符“ ”送给c2,字符“ b”送给c3,因为c只要求读入 一个
7、字符,后面不需要用空格作为两个字符的间隔。 10、输入输出的数据类型与所用格式说明符不一致。 例如, a 已定义为整型, b 定义为实型 a=3;b=4.5; printf(%f%dn,a,b); 编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。 11 、输入数据时,企图规定精度。 scanf(%7.2f, 这样做是不合法的,输入数据时不能规定精度。 12. switch 语句中漏写 break 语句。 例如:根据考试成绩的等级打印出百分制数段。 switch(grade) case A:printf(85100n); case B:printf(7084n); case
8、C:printf(6069n); case D:printf(60n); default:printf(errorn); printf 由于漏写了 break 语句, case 只起标号的作用, 而不起判断作用。 因此,当 grade 值为 A 时, printf 函数在执行完第一个语句后接着执行第二、 三、四、五个 函数语句。正确写法应在每个分支后再加上“ break; ”。例如 case A:printf(85100n);break; 13、忽视了 while 和 do-while 语句在细节上的区别。 (1)main() int a=0,I; scanf(%d, while(I10 循环
9、是 (2) main() int a=0,I; scanf(%d, do a=a+I; I+; while(Iy?x:y; retum(z); 形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为: int max(x,y) in tx,y; int乙 z=xy?x:y; return(z); 下一篇:手把手教你如何优化 C语言程序 *上一篇:为什么要学习C语言,而不是其 初学者最容易犯的错误是: 1、没有区分开教材上的数字 1和字母I,字母0和数字0的区别,造成变量未定义的错误。 另一个易错点是将英文状态下的逗号,分号;括号()双引号输入出入成中文状态下的逗号,分 号;括号(),双引
10、号“造成非法字符错误。 2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数组、函数等) 不区分大小写、漏掉 厂、“与“卜”“(”与)”不匹配、控制语句(选择、分支、循环)的 格式不正确、调用库函数却没有包含相应的头文件、调用未声明的自定义函数、调用函数时 实参与形参不匹配、数组的边界超界等。 3、修改C语言语法错误时要注意以下两点: (1)、由于 C 语言语法比较自由、灵活,因此错误信息定位不是特别精确。例如,当提 示第 10行发生错误时,如果在第 10行没有发现错误,从第 10 行开始往前查找错误并修改 之。 (2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误
11、,其他错误会随之 消失。 特别提示:一般情况下, 第一条错误信息最能反映错误的位置和类型,所以调试程序 时务必根据第一条错误信息进行修改,修改后,立即运行程序,如果还有很多错误,要一个 一个地修改 C语言程序设计入门学习六步曲 作者:admin发布时间:2012-04-29 19:52来源:C语言中文网人围观 QQ空间新浪微博人人网腾讯微博豆瓣10 初学者遇到最多的困惑是: 上课也能听懂, 书上的例题也能看明白, 可是到自己 动手做编程时,却不知道如何下手。发生这种现象的原因有三个: 一、所谓的看懂听明白, 只是很肤浅的语法知识, 而我们编写的程序或软件是要 根据要解决问题的实际需要控制程序的
12、流程, 如果你没有深刻地理解C语言的语 句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢? 二、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要 相关的专业知识。例如,如果你不知道长方形的面积公式, 即使C语言学得再好 你也编不出求长方形的面积的程序来。 三、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学 不好 C 语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过 自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你 恐怕都不行。 出现问题原因清楚了,那么如何学习呢 ?请你看【C语言学习六步曲】 特别提醒:在使用
13、本方法之前一定要先阅读 C语言的相关内容,要初步掌握相关 知识的要点,然后按下述方法学习,可以达到理解、巩固、提高 C语言知识和提 高程序调式能力的目的。 第一步、验证性练习 在这一步要求按照教材上的程序实例进行原样输入, 运行一下程序是否正确。 在 这一步基本掌握C语言编程软件的使用方法(包括新建、打开、保存、关闭 C 程序,熟练地输入、编辑C程序;初步记忆新学章节的知识点、养成良好的 C 语言编程风格)。单击此处查看【C语言的编程风格】 使用 Turbo C/C+ for Windows 集成实验与学习环境软件可以很方便地看着 软件集成的c语言入门教程输入练习其中的程序例题。具体使用方法参
14、见软 件帮助部分。 初学者最容易犯的错误是: 1、没有区分开教材上的数字1和字母I,字母0和数字0的区别,造成变量未 定义的错误。另一个易错点是将英文状态下的逗号 ,分号;括号() 双引号输入出 入成中文状态下的逗号,分号;括号(),双引号“”造成非法字符错误。 2、C语言初学者易犯语法错误:使用未定义的变量、标示符(变量、常量、数 组、函数等)不区分大小写、漏掉“;”、“ ”与“ ”、“(”与“)”不匹 配、控制语句(选择、分支、循环)的格式不正确、调用库函数却没有包含相应 的头文件、 调用未声明的自定义函数、 调用函数时实参与形参不匹配、 数组的边 界超界等。 3、修改C语言语法错误时要注
15、意以下两点: (1)、由于C语言语法比较自由、灵活,因此错误信息定位不是特别精确。 例如,当提示第 10行发生错误时,如果在第 10行没有发现错误,从第 10行开 始往前查找错误并修改之。 ( 2)、一条语句错误可能会产生若干条错误信息只要修改了这条错误,其 他错误会随之消失。 特别提示: 一般情况下, 第一条错误信息最能反映错误的位 置和类型, 所以调试程序时务必根据第一条错误信息进行修改, 修改后, 立即运 行程序,如果还有很多错误,要一个一个地修改,即,每修改一处错误要运行一 次程序。 第二步、照葫芦画瓢 在第一步输入的C程序的基础上进行试验性的修改,运行一下程序看一看程序结 果发生了什
16、么变化, 分析结果变化的原因, 加深新学知识点的理解。 事实上这和 第一步时同步进行的, 实现“输入”加深知识的记忆, “修改”加深对知识的理 解。记忆和理解是相辅相成的,相互促进。 例如:将最简单的 Hello World! 程序 #include stdio.h int main() printf(Hello World!n); return 0; 中的 printf(Hello World!n); 中的 Hello World! 改成你的姓名,运行一下程 序,看有什么变化? 再如求 1+2+3.+100 的和的程序 #include main() inti,sum=0; for(i=1;
17、i=100;i+) sum=sum+i; printf(sum=%dn,sum); 第 1 次将 for(i=1;i=100;i+) 第 2 次将 for(i=1;i=100;i+) 变化? 中的 100 改成 50,运行一下程序,看有什么变化? 中的 i+ 改成 i=i+2 ,运行一下程序,看有什么 找出程序结果变化的原因,就加深了对 C 语句的理解。 第三步、不看教材看是否能将前两步的程序进行正确 地输入并运行。 在这一步要求不看教材, 即使程序不能运行,看能否将其改正,使其能正确运行。 目的是对前两步的记忆、理解进一步强化。 第四步、增强程序的调试能力 在 Turbo C/C+ for
18、Windows 集成实验与学习环境集成的教材中每章都有 C 语言初学者易犯的错误, 按照易出错的类型, 将教材中的正确的程序改成错误的 程序,运行一下程序,看出现的错误信息提示,并记下错误信息,再将程序改成 正确的,运行一下程序。 这样反复修改, 就能够学习 C 语言程序发生错误的原因 和修改错误的能力。 注意:每次只改错一个地方, 目的是显示发生该错误的真正原因, 避免一次改动 多个地方,搞清发生错误的真正原因,切记! 注意:上机调试程序时要带一个记录本, 记下英文错误提示信息和解决该错误问 中的; 改成中文 题的方法,积累程序调试经验,避免在编程犯同样的错误,切记! 例如,将 Hello
19、World 程序中语句 printf(Hello World!n); 的分号;运行一下程序,看有什么结果? C语言的错误信息的形式:(下面例子是的Turobo C2.0错误信息,如图1) 错误 文件名 Q 口 行号 冒号 错误内容 E:WinTcWinTcfrist.c 5 in function main Error Function call missing) C语言的错误信息的形式: 文件名 是 冒号 ( 下面例子 Q 口 行号 Visual C+6.0 错误信息 ,如图 2) 错误代码 冒号 错误内容 e:wintcwintcfrist.c before ; error C2143 :
20、 syntax error : missing ) 和 Turbo c 2.0, 支 软件集成了高校教学用的最多的两个编译器 Visual C+6.0 持C、标准C、C+标准C+ WINDOWS程序的编辑、编译、和调试。软件根 据用户输入程序的类型智能选择编译器,不用使用者干涉。 调试程序是一种实践性很强的事, 光纸上谈兵是是没用的, 就像游泳运动员只听 教练讲解示范,而不亲自下水练习,是永远学不会游泳的。 即使在优秀的程序 员编写程序也会犯错误的, 可能事最低级的语法错误, 但他能快速发现错误并改 正错误,而我们C语言初学者面对错误提示,不知道发生了什么错误,如何改正, 这就是差别。 第五步
21、、研究典型的C语言程序,提高程序设计能力 经过上述过程的学习,我们已经学会了 C语言各种语句的流程(即计算机是如何 执行这些语句的过程),然后就可以研读别人编写 C语言经典程序,看懂别人是 如何解决问题的, 学习解决问题的方法和程序设计技巧, 提高自己的程序设计能 力。 在软件中有 50 多个典型的源程序,研究它的实现方法,提高自己的程序设计能 力。 第六步、研究课程设计源成序,提高 C语言程序设计 的能力。 C语言课程设计的目的:是让学生综合利用所学的 C语言知识,解决一些接近实 际问题题目, 提高程序设计和调试较大程序的能力, 为进一步进行软件开发打下 坚实的基础。 最后送C语言初学者一句
22、话来共勉:首先要相信自己是有能力学好 C语言的,然 后不惜一切代价把这种能力表现出来, 你就成功了。做任何事,何尝不是这样呢? 兴趣是学习C语言的最大动力,学习方法给你指明努力的方向,让你事半功倍。 如果你感觉对你有帮助的话, 请回帖支持,让更多的朋友知道它, 谢谢支持! C 语言中循环语句有三种: while 循环、 do-while 循环、 for 循环。 while 循环: 否则不执行。 后面括号里的值,如果为真则执行其后面的代码; while (1)表示死循环。死循环有没有用呢? 先判断 while 看下面例子: 特定的字符 #才可以停下来。 while (1) if( #= GetI
23、nputChar() break; 比如你开发一个系统要日夜不停的运行, 但是只有操作员输入某个 、 break 与 continue 的区别 break 关键字很重要, 表示终止本层循环。 现在这个例子只有一层循环, 当代码 执行到 break 时,循环便终止。 如果把 break 换成 continue 会是什么样子呢? continue 表示终止本次(本轮) 循环。当代码执行到 continue 时,本轮循环终止,进入下一轮循环。 while (1)也有写成 while(true) 或者 while(1=1) 形式的,效果一样。 或者 while(bool) 1) 等 do-while 循环: 先执行 do 后面的代码,然后再判断 如果为真,循环开始;否则,循环不开始。其用法与 相对较少用。 while 后面括号里的值, while 循环没
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心血管疾病AI风险评估的数据隐私保护
- 心脏移植供体分配的社会支持系统构建
- 心脏康复精准化:影像学与分子标志物整合评估
- 心肌炎患者的免疫营养支持策略
- 心内膜炎脑出血的多学科诊疗策略
- 微生物组与肠道疾病精准诊疗策略
- 微创神经外科老年患者麻醉风险评估工具
- 微创神经外科手术中超声刀与激光刀的烟雾管理策略
- 微创电刺激治疗偏头痛的前瞻性研究
- 微创入路对术后嗅觉功能的影响
- 2026年安全员考试题库300道附完整答案【必刷】
- 医疗纠纷预防与处理流程
- 2025福建德化闽投抽水蓄能有限公司招聘15人模拟试卷附答案
- 销售行业合同范本
- 2026年民用无人机操控员执照(CAAC)考试复习重点题库标准卷
- 英语试卷+答案黑龙江省哈三中2025-2026学年上学期高二学年12月月考(12.11-12.12)
- 运输企业消防安全责任制
- 艺术学概论共12章
- 液压升降平台安装施工方案
- 安全通道防护棚计算书
- 中文介绍迈克尔杰克逊
评论
0/150
提交评论