C语言学习常见错误分析

错误分类

语法错

逻辑错

运行错

0.忘记定义变量:

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

}

时间: 2024-10-10 09:08:03

C语言学习常见错误分析的相关文章

C++语言学习(十二)——C++语言常见函数调用约定

C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数就会出现堆栈异常等现象.上述现象出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方库(非C++语言开发)的情况下,原因是函数调用约定(Calling Convention)和函数名修饰(Decorated Name)规则导致的.函数调用约定决定函数参数入栈的顺序,以及由调用者函数还是被

【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年本人C语言笔试难点进行梳理,希望能对今年应届毕业生的应聘有所帮助. 2013年10月18日更新-->    攻破C语言这个帖子更新到这里,我不仅仅是为了补充大学学生遗漏的知识,我更重要的是希望通过我的经验,你们实际项目中的C语言写得漂亮,写出属于你的风格.“朱兆祺STM32手记”(http://bb

Go语言学习笔记(一) : 搭建Windows下的Go开发环境

最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布,并且不依赖任何虚拟机(其实是打包在exe里面了),这种好语言怎么能够错过?所以便一时兴起,开始学习了起来.由于本人还处于异常小白的阶段,所以文章中可能不免有些错误,欢迎大家各种指正. 安装Go 前往Go语言的官方网站:http://golang.org/, 下载对应平台的安装包.如果是x86的系统可

go语言学习笔记

go语言学习笔记 go语言学习笔记(初级) 最近一直在学习go语言,因此打算学习的时候能够记录 一下笔记.我这个人之前是从来没有记录笔记的习惯, 一直以来都是靠强大的记忆力去把一些要点记住. 读书的时候因为一直都是有一个很安静和很专心的环境, 因此很多事情都能记得很清楚,思考的很透彻.但是随着 年纪不断增加,也算是经历了很多的事情,加上工作有时会让人 特别烦闷,很难把心好好静下来去学习,去思考大自然的终极 奥秘,因此需要记录一些东西,这些东西一方面可以作为一种自我激励 的机制,另一方面,也算是自

跨语言学习的基本思路及python的基础学习

笔者是C#出身,大学四年主修C#,工作三年也是C#语言开发.但在学校里其他的语言也有相应的课程,eg:Java,Php,C++都学过,当然只是学了皮毛(大学嘛,你懂得),严格来说未必入门,但这些语言的代码阅读倒是不成问题,毕竟触类旁通嘛,有道是“一法通,万法明”,多学学其他的也没坏处. 近期被临时借调到其他项目组,由于新项目用的是Python,本人呢又没有python开发经验(之前只是知道有这门语言),工期呢两周多吧,简单来说就是时间紧,任务重,而且开发环境完全陌生,于是就得快速学会使用一门新语

JavaScript--基于对象的脚本语言学习笔记(一)

1.两种嵌入js的方式 使用javascript前缀构建url:<a href="javascript:alert('运行JavaScript..')">运行js</a> js脚本放在<style></style>之间: <style type="text/javascript"> alert("运行JavaScript..") </script> 2.如果没有声明变量直接使

linux 下C语言学习路线

转载:http://blog.csdn.net/xdw1985829/article/details/6817403 UNIX/Linux下C语言的学习路线. 一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统     在UNIX或Linux系统中学习C很方便,所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统,目前可供个人免费使用的UNIX或Linux

20165334 学习基础与c语言学习心得

学习基础和c语言学习心得 一.技能学习 ??我觉得在男生中,我做饭应该算不错的.我是小学四年级开始学做饭,从刚开始的学煮饭,到后来的蒸馒头,到最后的炒家常菜真的很有成就感.首先,我觉得做任何事情兴趣很重要,因为小时候喜欢美食,所以特别喜欢做东西给别人吃:其次我觉得别人的鼓励也非常重要,它会是你坚持下去的动力.因为受到爸爸对我做饭的鼓励,做晚饭从一开始的西红柿鸡蛋面到后来的三菜一汤,虽然做饭花的时间越来越多,但自己的成就感也越来越强.看着别人吃自己做的东西,自己感到很开心.所以这和娄老师下面这段话

C++语言学习(五)——C++语言中的CV限定符错误

C++语言学习(五)--C++语言中的CV限定符错误 ?一.CV限定符错误简介 1.CV限定符简介 CV限定符即cv-qualifier,C++语言中指const和volatile限定符.通常,C++语言中有两种情况不能使用CV限定符进行限定:A.非成员函数不能使用CV限定B.静态成员函数不能使用CV限定 2.CV限定符错误信息简介 C++语言中CV限定符错误信息如"cannot have cv-qualifier",常见的CV限定符错误信息如下:A.非成员函数的CV限定符错误信息er