


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序中常见错误分析1. 书写标识符时,忽略了大小写的区别 C语言认为大写和小写字母是两个不同的字符,如sum和SUM是不同的标识符。在C编程时,习惯上,符号常量名用大写表示,变量名用小写表示。2. 自定义标识符的错误 用户自定义的标识符只能是字母、数字和下划线组成且第一个字符必须是字母或下划线,不能与关键字相同。如 int if 是错误的。3. 使用未定义的变量或变量使用前未赋值。 如:main() int a,b=3; printf(“%d,%d,%d”,a,b,c); 错误1:变量c未定义,错误2:变量a使用前未赋值4. 忽略了变量类型,进行了不合法的运算main() float a=3.4,b=0.4; printf(%d,a%b);%是求余运算, 只有整型变量 a 和 b 可以进行求余运算, 而实型变量则不允许进行 “求余” 运算. 5.将字符常量与字符串常量混淆 如 char c; c=”A”; 在这里就混淆了字符常量与字符串常量, 字符常量是由一对单引号括起来的单个字符, 字符串常量是一对双引号括起来的字符序列. C规定以 “0” 作字符串结束标志, 它是由系统自动加上的, 所以字符串 “a” 实际上包含两个字符: a 和 0 , 而把它赋给一个字符变量是不符合语法要求的. 6忽略“=”与“= =”的区别 C语言中,“=”是赋值运算符,“= =”是关系运算符。例如: if(a= =3)a=b;前者是进行比较a是否和3相等;后者表示,如果a和3相等,则把b赋给变量a.7. 忘记加分号和多加分号 (1)语句后的分号问题C语言中每条语句后都应有一分号.例如:float fa, fb -后无分号“;”对于复合语句来说, 最后一个语句后的分号不能忽略不写例如: z=x+y;t=z/100;printf(%f,t); 但在复合语句的 “” 后千万不能再加 “; ” , 否则会画蛇添足.(2)语句未结束加分号 例如: 在 a 大于 b 时, 交换 a 和 b 内的值, 编制程序段如下:if (ab); t=a;a=b;b=t;则不论 a 和 b 的关系如何, 都会交换 a 和 b 的值. 因为 if (ab)后出现了分号则认为 if语句已经结束, 交换语句不受 if条件的控制在什么情况下都会执行. 这种错误在以下几种语句中也经常出现:while ( )for (; ; )switch ()在上面几个语句中括号后一般不应出现分号 ( 空语句除外) .8.输入变量时忘记加地址运算符“&”,而在不应加时加了:“&” (1).忘记加“&” int a,b; scanf(“%d%d”,a,b);应该为:scanf(“%d%d”,&a,&b); (2).多加“&” int str; scanf(%s,&str);应该为:scanf(%s,str);C语言编译系统对数组名的处理是: 数组名代表该数组的起始地址. 在 scanf函数中的输入项是字符数组名, 已经表示了数组的首地址, 不必再加地址符“&” . 9.输入数据的格式与要求格式不符例如 scanf(“%d%d”,&a,&b);正确的输入数据方法为在两个数据间用空格、 TAB键、回车键分隔, 若用其他符号分隔则数据不能正确读入变量中. 如果在引号中除格式说明符外出现了其他的字符或符号, 则必须原样输入, 否则数据也不能正确存入变量中.例如: scanf( “a=%d,b=%d” ,&a,&b);正确的数据输入方法为: a=3,b=410.输入字符的格式与要求一致在用“%c”格式输入字符时,“空格字符”和“转义字符”都将作为有效字符输入。例如:scanf(%c%c%c,&c1,&c2,&c3);若想输入abc 则应输入abc而不应用空格隔开a b c.11.输入输出的数据类型与所用格式说明符不一致例如:int a=3;float b=4.5; printf(%f%dn,a,b);编译时不给出错误信息,但运行结果将与原意不符,这种错误犹要注意。12.输入数据时,企图规定精度scanf(%7.2f,&a);不合法,输入数据不能规定精度。13. 定义数组时误用变量例如: int n;scanf( “%d” ,&n);int an;数组名后用方括号括起来的是常量表达式, 可以包括常量和符号常量. 在无法确定数组的实际长度时, 定义成可能的最大长度, 但绝不允许对数组的大小作动态定义.14. 使用数组越界在定义数组时, 将定义的 “元素个数” 误认为是可使的最大下标值. 这样就会产生数组越界现象.例如: static int a10= 1,2,3,4,5,6,7,8,9,10 ;printf( “%d” ,a10);C语言规定: 定义时用 a 10, 表示 a 数组有 10 个元素. 其下标值由 0 开始到 9 结束。15. 整型和实型的 “/” 运算区别例如: float a;a=1/2;printf( “%f” ,a);运行的结果是 0.000000,而不是 0.500000. 因为 “/” 号两边的数字是 1 和 2,系统会当作整型处理, 因此出现这种情况, 解决办法是改为: a=1.0/2 或 a=1/2.0 或 1.0/2.0.16. 数学表达式 abc 在 C 语言中的写法例如: int a=5,b=4,c=3,d; 若想在数学表达式 abc成立时例 d=1,否则 d=0. 编制的程序段如下:if (abc) d=1;else d=0;则不论 a、 b 的值为什么, 只要 c 大于 1, d 的值都为 0.因为 C 语法在判断条件时先判断 ab 的真假, 若为真则ab 的值为 1 , 否则为 0. 然后再判断 1c 或 0c, 只要 c是大于 1 的数, 这两个表达式就为假, 所以执行 else 后的语句 d=0. 此例正确的语句应为: if(ab&bc) .17. 注意int类型数据的取值范围 int a=40000; int类型的取值范围为:-327
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年机务段的考试题及答案解析
- 基于区块链的多目标关键路径研究-洞察及研究
- 高速公路封路合同模板(3篇)
- 高速边坡水沟施工合同(3篇)
- 高空修剪树木施工合同(3篇)
- 产业园区租赁承包管理合同
- 农业企业农产品质量及种植技术保密合同
- 法人名义挂靠免责协议范本
- 2025公务员综合岗位面试题及答案
- 原材料典当借款协议范本
- 贵阳市殡仪服务中心招聘考试真题2024
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 煤改电工程施工质量监控方案和措施
- 布病的护理教学课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 公司培训防诈骗知识宣传课件
- 2025年全国《质量知识竞赛》题库及答案
- epc项目承包意向合同范本
- 苗圃建设项目可行性研究报告
- 2025至2030中国军用导航仪器行业市场深度研究与战略咨询分析报告
评论
0/150
提交评论