1 / 28
文档名称:

C语言程序设计:常见错误总结分析.ppt

格式:ppt   大小:558KB   页数:28页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言程序设计:常见错误总结分析.ppt

上传人:窝窝爱蛋蛋 2022/4/15 文件大小:558 KB

下载得到文件列表

C语言程序设计:常见错误总结分析.ppt

文档介绍

文档介绍:*
常见错误总结分析
C 语言程序设计
*
程序出错有三种情况:
1. 语法错误
指违背了C语法规定。对这类错误,编译程序一般能给出“出错信息”,并且告诉你在哪一行出错。只要细心,是可以很快发现并排除的。
*
程序 i=1;
   while(i<=100)
sum=sum+i;
i++;
上面的循环体只有sum=sum+i一条语句,而且循环永不终止。
应改为
while(i<=100)
{sum=sum+i;
i++;

*
(9) 括弧不配对
当一个语句中使用多层括弧时常出现这类错误,纯属粗心所致。
少了一个右括弧
while((c=getchar( )!='#')
*
(10)引用数组元素时误用了圆括弧
void main()

int i, a(10);
for(i=0;i<10;i++)
scanf("%d",&a(i));

C语言中对数组的定义或引用数组元素时必须用方括弧。
*
(11) 在定义数组时,将定义的“元素个数”误认为是“可使用的最大下标值”
void main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf("%d",a[i]);
}
数组只包括a[0]到a[9] 10个元素,用a[10]就超出a数组的范围了。
*
(12) 误以为数组名代表数组中全部元素
void main( )
{
int a[4]={1, 3, 5, 7};
printf("%d%d%d%d\n",a);
}
在C语言中,数组名代表数组首地址,不能通过数组名输出4个数字型数据。
*
(13) 混淆字符数组与字符指针的区别
void main()
{ char str[4];
str="Computer and c";
printf("%s\n",str);
}
编译出错。str是数组名,代表数组首地址。在编译时对str数组分配了一段内存单元,因此在程序运行期间str是一个常量,不能再被赋值。
如果把“char str[4];”改成“char *str;”,则程序正确。此时str是指向字符数据的指针变量,str=“Computer and c”是合法的,它将字符串的首地址赋给指针变量str.
*
(14) 引用指针变量之前没有对它赋予确定的值
void main()
{ char *p;
scanf("%s", p);

}
应当改为:
charp,c[20;
  p=c;
  scanf("%s" ,p);
没有给指针变量p赋值就引用它,编译时给出警告信息。
*
(15) switch语句的各分支中漏写break语句
switch(score)
{ case 5:printf(“Very good!");
case 4:printf("Good!");
case 3:printf("Pass!");
case 2:printf("Fail!");
default:printf("data error!");
}
当score的值为5时,输出为?
*case只起标号的作用,而不起判断作用
*
(16) 混淆字符和字符串的表示形式
char sex;
   sex="M";
sex是字符变量,只能存放一个字符。而字符常量的形式是用单引号括起来的,应改为
sex='M';
“M”是用双引号括起来的字符串,它包括两个字符:‘M’和‘\0’,无法存放到字符变量sex中。
*
(17)误认为形参值的改变会影响实参的值
void main( )
{ int a,b;
a=3;b=4;
swap(a, b);
printf("%d,%d\n", a,b);
 }
void swap(int x, int y)
{int t;
t=x; x=y; y=t;

*
(18) 混淆数组名与指针变量的区别
void main()
{ int i,a[5];
for(i=0;i<5;i++)
scanf("%d",a++);


企图通过a的改变使指针下移,数组名代表数组首地址,它的值是不能改变的,用a++