分享
 
 
 

C语言常见错误分析

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

C语言常见错误分析:

错误分类

语法错

逻辑错

运行错

0.忘记定义变量:

main()

{x=3;y=6;

printf(“%d\n”,x+y);

1.C语言的变量一定要先定义才能使用;

2.输入输出的数据的类型与所用格式说明符不一致

int a=3;float b=4.5;printf(“%f%d\n”,a,b);

它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)

3.未注意int型数据的数值范围

int型数据的数值范围(-32768~32768)

int num=89101;

printf(“%d”,num);

会将超过低16位的数截去从而得到23563

注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误

4.输入变量时忘记使用地址符

scanf(“%d%d”,a,b);

5.输入时数据的组织与要求不符

对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入

6.误把”=“作为”等于”比较符

“=“为附值运算符

“==“为比较运算符

7.语句后面漏分号

{

t=a;

a=b;

b=t

}

它是pascal的语法

8.不该加分号的地方加了分号

if(a>b);

printf(“a is larger than b\n”);

for(i=0;i<10;i++);

{

scanf(“%d”,&x);

printf(“%d\n”,x*x);

}

9.对应该有花括弧的复合语句,忘记加花括弧

sum=0;

i=1;

while(i<=100)

sum=sum+1;

i++;

10.括弧不配对

while((c=getchar()!=‘#’)

putchar(c);

11.在用标识时,忘记了大写字母和小写字母的区别

{

int a,b,c;

a=2;

b=3;

C=A+B;

printf(“%d+%d=%D”,A,B,C);

}

12.引用数组元素时误用发圆括弧

{

int i,a(10);

for(i=0;i<10;i++)

scanf(“%d”,&a(i));

}

13.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值

{

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]);

}

14.对二维或多维数组的定义和引用的方法不对

{

int a[5,4];

printf(“%d”,a[1+2,2+2]);

}

15.误以为数组名代表数组中全部元素

{int a[4]={1,2,3,4};

printf(“%d%d%d%d”,a);

}

16.混淆字符数组与字符指针的区别

main()

{

char str[40];

str=“Computer and c”;

printf(“%s\n”,str);

}

17.在引用指针变量之前没有对它赋予确定的值

{

char *p;

scanf(“%s”,p);

}

{

char *p,c[20];

p=c;

scanf(“%s”,p);

}

18.switch语句的各分支中漏写 break语句

混淆字符和字符串的表示形式

char sex;

sex=“M”;

19.使用自加(++)和自减(--)运算符时出的错误

{

int *p,a[5]={1,3,5,7,9};

p=a;

printf(“%d”,*p++);

}

注意于*(++p)的区别;

20.所调用的函数在调用语句之后才定义,而又在调用前未加说明

main()

{float x,y,z;

x=3.5;y=-7.6;

z=max(x,y);

printf(“%f”,z);

}

float max(float x,float y)

{

return (x>y?x:y);

}

21.误认为形参值的改变会影响实参的值

swap(int x,int y)

{int t;

t=x;x=y;y=t;

}

main()

{int a,b;

a=3;b=4;

swap(a,b);

printf(“%d,%d\n”,a,b);

}

22.函数的实参和形参类型不一致

fun(float x,float y)

main()

{

int a=3,b=4;

c=fun(a,b);

}

23.不同类的型指针混用

{

int i=3,*p1;

float a=1.5,*p2;

p1=&i;p2=&a;

p2=p1;

printf(“%d,%d\n”,*p1,*p2);

}

24.没有注意函数参数的求值顺序

int i=3;

prinft(“%d,%d,%d\n”,i,++i,++i);

结果为5,5,4

因为VC++是采取自右至左的顺序求函数的值

C标准没有具体规定函数参数求值的顺序

25.混淆数组名与指针变量的区别

{ int i,a[5];

for(i=0;i<5;i++)

scanf(“%d”,a++);

}

{int a[5],*p;

p=a;

for(int i=0;i<5;i++)

scanf(“%d”,p++)

}

{int a[5],*p;

for(p=a;p<a+5;p++)

scanf(“%d”,p);

}

26.混淆结构体类型与结构体变量的区别

struct worker

{long int num;

char name[20];

char sex;

int age;

};

worker.num=187045;

strcpy(worker.name,”ZhangFun”);

worker.sex=‘M’;

worker.age=18;

27.使用文件时忘记打开,用只读方式打开,却企图向该文件输出数据

if(fp=fopen(“test”,”r”))==NULL)

{printf(“cannot open this file\n”);

exit(0);

}

ch=fgetc(fp);

while(ch!=‘#’)

{ch=ch+4;

fputc(ch,fp);

ch=fgetc(fp);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有