C语言程序编辑或调试中常见的错误.doc

C语言程序编辑或调试中常见的错误.doc

ID:50368368

大小:42.02 KB

页数:5页

时间:2020-03-08

C语言程序编辑或调试中常见的错误.doc_第1页
C语言程序编辑或调试中常见的错误.doc_第2页
C语言程序编辑或调试中常见的错误.doc_第3页
C语言程序编辑或调试中常见的错误.doc_第4页
C语言程序编辑或调试中常见的错误.doc_第5页
资源描述:

《C语言程序编辑或调试中常见的错误.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、常见错误和程序分析(1)忘记定义变量。例如:voidmain(){x=3;y=6;printf(“%d”,x+y);}C要求对程序中用到的美一个变量都必须定义其类型,上面程序中没有对x,y进行定义。应在函数体的开头加intx,y;(2)输入输出的数据类型与所用格式说明符不一致。例如,若a已定义为整数,b已定义为实型:a=3;b=4.5;/*对a和b赋值*/printf(“%f%d”,a,b);编译时不给出出错信息,但运行结果将与原意不符,输出为0.00000016402它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个

2、字节,只把最后2个字节中的数据按%d作为整数输出)。(3)未注意int型的数据的数值范围。TurboC等编译系统,对一个整型数据分配2个字节。因此一个整数的范围为-2的13次方到2的15次方减1,即-32768~32767常见这样的程序段:intnum;num=89101;printf(“%d”,num);得到的却是23565,原因是89101已超过32767。2个字节容纳不下89101,则将高位截去,即将超过低16位的数截去,也即89101-65536=23565,有时还会出现负数。这种情况应改为:Longintnum;num=89101;printf(“%ld”,num);注意,如果只定义

3、num为long型,而在输出时扔用%d说明符,也会出现以上错误。(4)在输出语句scanf中忘记使用变量的地址符。例如:scanf(“%d%d”,a,b);这是很多初学者刚学C语言时常见的疏忽,应写为scanf(“%d%d”,&a,&b);(5)输入数据的形式与要求不符。例如有以下scanf函数:scanf(“%d%d”,&a,&b);有人输入3,4,这是错的数据间应该用空格来分隔,读者可以用printf(“%d%d”,a,b);来验证下。应该输入34,除非函数是scanf(“%d,%d”,&a,&b);还应注意不能企图用scanf(“inputa&b:%d,%d”,&a,&b);想在屏幕上显

4、示一行信息:inputa&b:然后在其后显示a,b的值,这是不行的。可以改为:printf(“inputa&b:”);scanf(“%d,%d”&a,&b);(6)误把“=”作为“等于”运算符,“==”才是关系运算符“等于”。(7)语句后面漏分号。(8)在不该加分号的地方加分号。例如if,for,while语句中,不应有分号,切勿画蛇添足。(9)对应该有花括号的复合语句,忘记加花括号。例如sun=0;i=1;while(i<=100)sum=sum+I;i++;这时候,其实有些人已看出问题了,就是while语句后没有花括号。(10)括号不配对。当一个语句中使用多层次括号时常出现这类错误,纯粹粗

5、心。while((c=getchar()!=’#’)putchar(c);(11)在用标识符时忘记打写字母和小写字母的区别。例如:voidmain(){inta,b,c;a=2;b=3;C=A+B;printf(“%d+%d=%d”,A,B,C);}编译时出错,编译程序把a和A认作是两个不同的变量名处理,(12)引用数组元素时误用了圆括号。例如:voidmain(){inti,a[10];for(i=0;i<10;i++)scanf(“%d”,&a(i));}(13)在定义数组时,将定义的“元素个数”误认为是“可使用的最大下标值”例如:voidmain(){inta[10]={1,2,3,4,

6、5,6,7,8,9,10};inti;for(i=1;i<=10;i++)printf(“%d”,a[i]);}想输出a[1]到a[10]。C语言规定定义时用a[10]表示a数组有10个元素,是从a[0]到a[9],因此用a[10]就超出a数组的范围了。(14)对二维或多维数组的定义和引用方法不对。例如:voidmain(){inta[5,4];。。printf(“%d”,a[1+2,2+2]);。}a[5,4]是错的,应改为a[5][4],同样a[1+2,2+2]也是错的。(15)误以为数组名代表数组中全部元素。例如:voidmain(){inta[4]={1,3,5,7};printf(“

7、%d%d%d%d”,a);}在C语言中数组名代表数组首地址,不能通过数组名输出4个整数。(16)混淆字符数组与字符指针的区别。例如:voidmain(){charstr[4];str=”Computeandc”;printf(“%s”,str);}编译出错。str是数组名,代表数组首地址。在编译时对str数组分配了一段内存单元,因此在程序运行期间str是一个常量,不能再被赋值。如果把“ch

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。