好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C语言程序设计第13章-常见错误0).ppt

53页
  • 卖家[上传人]:王****
  • 文档编号:320689477
  • 上传时间:2022-07-01
  • 文档格式:PPT
  • 文档大小:752.54KB
  • / 53 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • C语言程序设计语言程序设计技术基础技术基础太原理工大学计算机学院计算机基础部第第13章章常见错误分析常见错误分析本章对本章对C语言编程过程中经常出现的错误进行简单列举和分语言编程过程中经常出现的错误进行简单列举和分析,并依据析,并依据C语言的语法格式和编程规则对错误进行改正,语言的语法格式和编程规则对错误进行改正,有助于初学者在学习过程中识别和避免,提高程序设计和调有助于初学者在学习过程中识别和避免,提高程序设计和调试能力C语言程序的开发过程:一个编辑好的语言程序的开发过程:一个编辑好的C语言源程序文件首先语言源程序文件首先要通过编译进行语法检查生成目标程序,进而对目标程序进要通过编译进行语法检查生成目标程序,进而对目标程序进行链接生成可执行文件,最后运行可执行文件检查该程序是行链接生成可执行文件,最后运行可执行文件检查该程序是否符合设计要求否符合设计要求 语法错误语法错误(1)程序举例:程序举例:#includevoidmain()inta,b,sum;sum=a+b;printf(sum=%d,sum); 错误信息错误信息:fatalerrorC1004:unexpectedendoffilefound。

      错误分析错误分析:文件未结束造成此错误的原因是一个函数或一个结:文件未结束造成此错误的原因是一个函数或一个结构定义缺少构定义缺少“”,或者在一个函数调用或表达式中括号没有配,或者在一个函数调用或表达式中括号没有配对出现,或者注释符对出现,或者注释符“/*/”不完整等不完整等 语法错误语法错误(1)改正:改正:#includevoidmain()inta,b,sum;sum=a+b;printf(sum=%d,sum); /*添加匹配的“”*/ 语法错误语法错误(2)程序举例:程序举例:#includevoidmain() 错误信息错误信息:fatalerrorC1083:Cannotopenincludefile:stio.h:Nosuchfileordirectory 错误分析错误分析:无法打开头文件:无法打开头文件stio.h:没有这个文件或路径造成:没有这个文件或路径造成此错误的原因是头文件不存在,或者头文件拼写错误,或者文件此错误的原因是头文件不存在,或者头文件拼写错误,或者文件为只读为只读 语法错误语法错误(2)改正:改正:#include/*更正头文件的拼写错误更正头文件的拼写错误*/ voidmain() 语法错误语法错误(3)程序举例:程序举例:#includevoidmain()inta=2,b=5;b=a;printf(a=%d,b=%d,a,b);错误信息错误信息:errorC2001:newlineinconstant 。

      错误分析错误分析:常量中有新行造成此错误的原因一般是调用输入:常量中有新行造成此错误的原因一般是调用输入/输出函数输出函数scanf()和和printf()时格式控制字符串漏掉双引号时格式控制字符串漏掉双引号“” 语法错误语法错误(3)改正:改正:#includevoidmain()inta=2,b=5;b=a;printf(a=%d,b=%d”,a,b);/*格式控制字符串末尾添加格式控制字符串末尾添加“”*/ 语法错误语法错误(4)程序举例:程序举例:#includevoidmain()inta,b; 错误信息错误信息:errorC2018:unknowncharacter0 xhh错误分析错误分析:未知的字符:未知的字符0 xhh造成此错误的原因一般是输入了中造成此错误的原因一般是输入了中文标点符号文标点符号 语法错误语法错误(4)改正:改正:#includevoidmain()inta,b;/*更正为英文标点更正为英文标点*/ 语法错误语法错误(5)程序举例:程序举例:#includevoidmain()intx=2,y=6;z=x*y;printf(%d,z);错误信息错误信息:errorC2065:z:undeclaredidentifier 。

      错误分析错误分析:未知的字符:未知的字符z造成此错误的原因是未定义变量、数造成此错误的原因是未定义变量、数组、函数原型等,注意拼写错误或区分大小写组、函数原型等,注意拼写错误或区分大小写 语法错误语法错误(5)改正:改正:#includevoidmain()intx=2,y=6,z;/*添加变量添加变量z的声明的声明*/ z=x*y;printf(%d,z);语法错误语法错误(6)程序举例:程序举例:#includevoidmain()floatm,n;m=1.6;n=2.2printf(%f,m+n);错误信息错误信息:errorC2146:syntaxerror:missing;beforeidentifierprintf 错误分析错误分析:在标识符:在标识符“printf”前漏写符号前漏写符号“;”造成此错误的造成此错误的原因是在语句的末尾漏写了分号原因是在语句的末尾漏写了分号 语法错误语法错误(6)改正:改正:#includevoidmain()floatm,n;m=1.6;n=2.2;/*添加分号添加分号“;”*/ printf(%f,m+n);语法错误语法错误(7)程序举例:程序举例:#includevoidmain()inta,b,max;scanf(%d%d,&a,&b);if(ab);max=a;elsemax=b;printf(max=%d,max);错误信息错误信息:errorC2181:illegalelsewithoutmatchingif 。

      错误分析错误分析:非法的没有与:非法的没有与if相匹配的相匹配的else造成此错误的原因可造成此错误的原因可能是在能是在if条件后多加了条件后多加了“;”或复合语句中没有使用或复合语句中没有使用“” 语法错误语法错误(7)改正:改正:#includevoidmain()inta,b,max;scanf(%d%d,&a,&b);if(ab)/*删除分号删除分号“;”,使,使if和和else相配对相配对*/ max=a;elsemax=b;printf(max=%d,max);语法错误语法错误(8)程序举例:程序举例:#includevoidmain()floatx,y;scanf(%f,&x);if(x1)y=x;elseif(x10)y=2x-1;elsey=3x-11;printf(y=%7.2f,y);错误信息错误信息:errorC2059::syntaxerror:badsuffixonnumber 错误分析错误分析:数值上有错误的后缀造成此错误的原因一般是在语:数值上有错误的后缀造成此错误的原因一般是在语句中算术运算时漏掉乘法运算符句中算术运算时漏掉乘法运算符“*” 语法错误语法错误(8)改正:改正:#includevoidmain()floatx,y;scanf(%f,&x);if(x1)y=x;elseif(x10)y=2*x-1;/*在在2x中间添加乘法运算符中间添加乘法运算符“*”*/ elsey=3*x-11;/*在在3x中间添加乘法运算符中间添加乘法运算符“*”*/ printf(y=%7.2f,y);语法错误语法错误(9)程序举例:程序举例:#includevoidmain()intn=10;intan; 错误信息错误信息:errorC2057:expectedconstantexpression 。

      错误分析错误分析:期待常量表达式造成此错误的原因是在定义数组长:期待常量表达式造成此错误的原因是在定义数组长度时使用了变量度时使用了变量 语法错误语法错误(9)改正:改正:#includevoidmain()inta10; /*数组的长度改为常量表达式数组的长度改为常量表达式*/ 语法错误语法错误(10)程序举例:程序举例:#includevoidmain()charstr10;str=China;printf(%sn,str);错误信息错误信息:errorC2106::=::leftoperandmustbel-value 错误分析错误分析:操作符的左操作数必须是左值造成此错误的原因是:操作符的左操作数必须是左值造成此错误的原因是混淆使用字符数组和字符指针,混淆使用字符数组和字符指针,str是数组名,为常量,不能被赋是数组名,为常量,不能被赋值值 语法错误语法错误(10)改正:改正:#includevoidmain()char*str;/*定义字符指针定义字符指针str,将字符串首地址赋值给,将字符串首地址赋值给str*/ str=China;printf(%sn,str);语法错误语法错误(11)程序举例:程序举例:#includevoidmain()structstudentlongintnum;charname20;intage;floatscore;student.num=20120123; 错误信息错误信息:errorC2224::=::leftof.nummusthavestruct/uniontype 。

      错误分析错误分析:.num”左侧必须有结构左侧必须有结构/联合类型造成此错误的原联合类型造成此错误的原因是混淆结构体类型名和结构体变量名因是混淆结构体类型名和结构体变量名 语法错误语法错误(11)改正:改正:#includevoidmain()structstudentlongintnum;charname20;intage;floatscore;structstudentstudent1;/*定义结构体变量定义结构体变量student1*/ student.num=20120123; 语法错误语法错误(12)程序举例:程序举例:#includevoidmain()inta;a=3.5; 错误信息错误信息:warningC4244:=:conversionfromconstdoubletoint,possiblelossofdata 错误分析错误分析:(编译警告编译警告)赋值运算,从数据类型赋值运算,从数据类型“double”转换为转换为数据类型数据类型“int”,可能丢失数据造成此错误的原因是把浮点,可能丢失数据造成此错误的原因是把浮点型常量赋值给整型变量型常量赋值给整型变量a,可能造成结果偏差,赋值时要注意变,可能造成结果偏差,赋值时要注意变量的类型量的类型 。

      语法错误语法错误(12)改正:改正:#includevoidmain()floata;a=3.5; 语法错误语法错误(13)程序举例:程序举例:#includevoidmain()inti;scanf(%d,i); 错误信息错误信息:warningC4700::localvariableiusedwithouthavingbeeninitialized 错误分析错误分析:(编译警告编译警告)变量变量i在使用前未初始化,变量未赋值,结在使用前未初始化,变量未赋值,结果有可能不正确,如果变量通过果有可能不正确,如果变量通过scanf()函数赋值,则有可能漏函数赋值,则有可能漏写写“&”运算符运算符 语法错误语法错误(13)改正:改正:#includevoidmain()inti;scanf(%d,&i);/*添加地址运算符添加地址运算符“&”*/ 链接错误链接错误(1)错误信息错误信息:errorLNK2001:unresolvedexternalsymbol_mian 错误分析错误分析:(链接错误链接错误)未处理的外部标识未处理的外部标识main造成此错误的原造成此错误的原因一般是因一般是main拼写错误,如拼写错误,如“voidmian()” 。

      (2)错误信息错误信息:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfounderrorLNK2005:_mainalre。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.