初学C语言的人最容易犯的错误集锦(二)
C语言新手编程时常犯的10个错误及解决方式

C语言的最大特点是:功能强、使用方便灵活。
C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。
看着有错的程序,不知该如何改起,小编通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。
1、将字符常量与字符串常量混淆。
char c;c="a";在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘',而把它赋给一个字符变量是不行的。
2、输入数据时,企图规定精度。
scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度。
3、输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);如输入a b c字符“a”送给c1,字符“”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
4、输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型a=3;b=4.5;printf("%f%d ",a,b);编译时不给出出错信息,但运行结果将与原意不符。
这种错误尤其需要注意。
5.switch语句中漏写break语句。
例如:根据考试成绩的等级打印出百分制数段。
switch(grade){case 'A':printf("85~100 ");case 'B':printf("70~84 ");case 'C':printf("60~69 ");case 'D':printf("<60 ");default:printf("error ");}由于漏写了break语句,case只起标号的作用,而不起判断作用。
C语言初学者上机容易犯的错误

1、scanf函数中,遗忘输入列表中的地址符。
例如对两个整形变量由键盘输入赋值。
同学们往往容易遗忘地址符&scanf("%d%d",&x,&y);2、在使用数学函数时,忘记在程序初始位置把math.h文件包含进来。
例如使用数学函数fabs,sqrt等函数时,需要在程序开始加上#include"math.h"或者#include<math.h>3、在if语句的条件表达式中,容易把赋值运算符=与逻辑等运算符==相混淆。
其实,初学者容易把==写成=例如:if(x==1)//初学者容易把==写成=printf("OK");4、对除运算符了解不透。
对于除运算符,如果参加运算的两个量其中有一个是浮点数的话,最后的结果便为浮点型,但若两个数均为整数的话,则结果为整型,而且仅仅是简单的截取整数部分。
例如1/2的结果是0而不是0.55、由两个字符组成的运算符中间不允许夹有任何其它符号(包括空格)例如<=和++及&=等等6、变量输入时的格式符要与其定义时类型相同,否则会出现运行时错误。
例如:int i;scanf("%f",&i);7、强制类型转换时,容易落掉小括号。
例如:(float)5/2;说明:如果需要进行强制类型转换的是表达式的话,需要把表达式括起来。
当然如果需要转换的是一个变量或者常量的话,括号可以省略,例如该例子。
8、switch语句中,括号里的表达式是整型(包括字符型和枚举类型),但不能是其他类型,例如浮点型。
9、输出时的格式符要与变量的类型相吻合。
例如,如果变量x是int型,输出时,格式符应该是%d。
而x变量是float型,输出时,格式符应该是%f。
很多同学变量输入输出的格式符和变量的类型不一致,导致出现结果错误。
编译链接时没错,但运行结果错误。
10、if和else的匹配问题。
C语言程序设计中的常见错误和解决

C语言程序设计中的常见错误和解决在C语言程序设计中,很多初学者经常会遇到一些常见的错误。
这些错误可能是语法错误、逻辑错误或者是其他一些常见问题导致的。
本文将介绍一些经常出现的C语言程序设计错误,并提供相应的解决方法,帮助读者更好地理解和掌握C语言编程。
一、语法错误1. 括号未匹配括号未匹配是C语言中常见的语法错误之一。
在编写代码时,经常会使用到括号,如if语句、for循环等。
如果不小心忘记关闭某个括号,就会导致括号未匹配的错误。
解决方法:仔细检查代码中的括号是否匹配,并确保每个左括号都有相应的右括号。
2. 分号丢失分号丢失是C语言中另一个常见的语法错误。
在C语言中,分号用于分隔语句,如果遗漏了分号,编译器就无法识别出语句的结束。
解决方法:检查每一行语句的末尾,确保每个语句都以分号结尾。
3. 变量未声明在使用变量之前,必须先声明该变量。
如果没有先声明变量就直接使用,编译器将无法识别该变量,从而报错。
解决方法:在使用变量之前,先进行变量声明。
二、逻辑错误1. 循环控制条件错误在编写循环语句时,控制条件的错误是常见的逻辑错误。
如果循环的控制条件错误,循环可能无法正常结束或者根本无法执行。
解决方法:仔细检查循环的控制条件,确保条件符合预期,并在循环体内更新循环变量。
2. 数组越界访问在C语言中,数组的索引从0开始,通过索引访问数组元素时,如果索引超出了数组的范围,就会导致数组越界访问的错误。
解决方法:确保数组索引在正确的范围内,避免越界访问。
如果需要遍历数组,可以使用循环来控制数组的访问范围。
三、其他常见问题及解决方法1. 变量类型不匹配在赋值操作或者表达式计算时,如果不同类型的变量之间进行操作,则会导致变量类型不匹配的错误。
解决方法:确保操作的变量类型相同或者进行强制类型转换,以保证变量类型的匹配。
2. 内存泄漏在C语言中,手动分配内存的操作是常见的。
如果分配了内存空间,但在使用完毕后未及时释放,就会导致内存泄漏。
c语言编程中的常见错误

c语言编程中的常见错误在C语言中,内存错误是最为人诟病的。
这些错误让项目延期或者被取消,引发无数的安全问题,甚至出现人命关天的灾难。
抛开这些大道理不谈,它们确实浪费了我们大量时间,这些错误引发的是随机现象,即使有高一倍以上,质量可以提高几倍了。
这里列举一些常见的内存错误,供新手参考。
1内存泄露2内存越界访问3野指针4访问空指针5引用未初始化的变量6不清楚指针运算7结构的顺序变化引发的错误8结构的大小变化引发的错误9分配/释放不配对10返回指向临时变量的指针11试图修改常量12误解传值与传引用13重名符号14栈溢出15误用sizeof16字节对齐17字节顺序18多线程共享变量没有用valotile修饰19忘记函数的返回值o 内存泄露大家都知道,在堆上分配的内存,如果不再使用了,应该把它释放掉,以便后面其它地方可以重用。
在C/C++中,内存管理器不会帮你自动回收不再使用的内存。
如果你忘了释放不再使用的内存,这些内存就不能被重把内存泄露列为首位,倒并不是因为它有多么严重的后果,而因为它是最为常见的一类错误。
一两处内存泄露通常不至于让程序崩溃,也不会出现逻辑上的错误,加上进程退出时,系统会自动释放该进程所有相关的续内存分配将会失败,程序可能因此而崩溃。
现在PC机的内存够大了,加上进程有独立的内存空间,对于一些小程序来说,内存泄露已经不是太大的威胁。
但对于大型软件,特别是长时间运行的软件,或者嵌入式系统来说,内存泄露仍然是致命的因素之一。
不管在什么情况下,采取谨慎的态度,杜绝内存泄露的出现,都是可取的。
相反,认为内存有的是,对内存泄露放任自流都不是负责的。
尽管一些工具可以帮助我们检查内存泄露问题,我认为还是应该在编程时就仔细o 内存越界访问内存越界访问有两种:一种是读越界,即读了不属于自己的数据,如果所读的内存地址是无效的,程度立刻就崩溃了。
如果所读内存地址是有效的,在读的时候不会出问题,但由于读到的数据是随机的,它会产生不内存越界访问造成的后果非常严重,是程序稳定性的致命威胁之一。
新手在学习编程时需要避免的7个常见错误

新手在学习编程时需要避免的7个常见错误在新手学习编程的过程中,常常会遇到一些困难和错误。
这是非常正常的,因为编程是一门需要不断实践和学习的技能。
然而,有些错误是很常见且可以避免的。
本文将介绍新手在学习编程时需要避免的七个常见错误,帮助读者避免走弯路,提高学习效率。
错误一:跳过基础知识很多新手在学习编程时,为了尽快开始写代码,会直接跳过基础知识的学习,而直接去学习高级的编程语言或框架。
这种做法是非常错误的。
基础知识是编程的基石,只有掌握了基础知识,才能更好地理解和应用高级知识。
因此,新手在学习编程时一定要从基础知识开始,系统地学习编程的基本概念和原理。
错误二:不注重代码风格和规范编程是一门艺术,良好的代码风格和规范是提高代码质量和可读性的关键。
然而,很多新手在学习编程时往往忽视了代码的风格和规范,导致代码难以理解和维护。
因此,新手在学习编程时应该注重代码的书写规范,养成良好的编程风格习惯。
同时,可以学习并遵循行业内通用的编码规范,如Google编码规范、Python PEP 8等。
错误三:缺乏实践经验理论知识是学习编程的基础,但只有实践才能使理论更加深入和实用。
很多新手在学习编程时过于注重理论,而忽视了实际的练习和项目实践。
实践是提高编程能力的关键,通过实践可以巩固和运用所学的知识。
因此,新手在学习编程时应该注重实践,多写代码,做一些小项目,锻炼自己的实践能力。
错误四:没有良好的问题解决思路在编程过程中,难免会遇到一些问题。
然而,很多新手在面对问题时往往束手无策,不知道如何解决。
这是因为他们缺乏良好的问题解决思路。
解决问题的关键在于善于思考和查找相关资料。
新手在学习编程时应该培养自己的问题解决能力,学会思考和分析问题的根源,并善于利用搜索引擎、官方文档和论坛等资源寻找解决办法。
错误五:孤立学习编程是一个团队合作的活动,而很多新手在学习编程时选择孤立学习,很少与他人交流和合作。
这样会导致学习进度慢,且无法从他人的经验中学习。
C 语言初学者有哪些常见的基本错误?

C语言是一门广泛使用的编程语言,但对于初学者来说,学习过程中会遇到一些常见的基本错误。
这些错误可能会导致程序出错或者无法正常运行,因此了解和避免这些错误是非常重要的。
1.拼写错误拼写错误是初学者经常犯的错误。
在C语言中,拼写错误可能会导致程序无法编译或者运行错误。
例如,将“printf”拼写为“prinf”或者将“main”拼写为“mian”都会导致程序无法编译。
为了避免这种错误,建议初学者在编写代码时仔细检查拼写,或者使用IDE(集成开发环境),它可以自动检查拼写错误并提供纠正建议。
2.语法错误语法错误是初学者常见的错误之一。
在C语言中,语法错误可能会导致程序无法编译或者运行错误。
例如,忘记添加分号或者花括号不匹配都会导致程序无法编译。
为了避免这种错误,建议初学者仔细阅读代码,并确保所有语法都是正确的。
使用IDE可以帮助初学者检测语法错误。
3.数组越界数组越界是初学者常见的错误之一。
在C语言中,数组越界可能会导致程序崩溃或者出现未定义的行为。
例如,访问数组中不存在的元素或者访问超出数组范围的元素都会导致数组越界。
为了避免这种错误,建议初学者确保数组索引在数组范围内,并使用循环结构来遍历数组。
使用IDE可以帮助初学者检测数组越界错误。
4.变量未初始化变量未初始化是初学者常见的错误之一。
在C语言中,未初始化的变量可能会导致程序出现未定义的行为。
例如,未初始化的变量可能包含随机值或者空值。
为了避免这种错误,建议初学者在使用变量之前初始化它们。
使用IDE可以帮助初学者检测未初始化的变量。
5.内存泄漏内存泄漏是初学者常见的错误之一。
在C语言中,内存泄漏可能会导致程序消耗大量内存并最终崩溃。
例如,未释放动态分配的内存或者重复释放内存都会导致内存泄漏。
为了避免这种错误,建议初学者在使用动态内存分配时,确保释放所有分配的内存。
使用IDE可以帮助初学者检测内存泄漏。
C语言初学者常见的基本错误包括拼写错误、语法错误、数组越界、变量未初始化和内存泄漏。
学习C语言的个常见错误
学习C语言的个常见错误C语言是一门广泛应用于编程领域的高级编程语言,因其简洁、高效和灵活性而受到广泛关注和应用。
然而,对于初学者来说,学习C语言可能会遇到一些常见错误。
本文将分享一些关于学习C语言时常见的错误,旨在帮助读者在学习过程中更好地避免这些错误。
错误一:语法错误语法错误是学习任何编程语言时都会遇到的问题,尤其是对于初学者。
C语言的语法非常严格,缺少一个括号、分号或者拼写错误都有可能导致代码无法编译或运行失败。
因此,在编写代码的过程中,务必要仔细检查每一行代码,确保语法正确。
错误二:变量未初始化在C语言中,变量需要在使用之前进行初始化,否则它们的值是不确定的。
未初始化的变量可能会导致程序崩溃或产生不可预料的结果。
因此,建议在使用变量之前对其进行初始化,确保其值是可知的。
错误三:内存泄漏C语言是一种底层编程语言,开发者需要手动分配和释放内存。
内存泄漏指的是在程序运行过程中,分配的内存没有被正确释放,导致内存占用不断增加,最终引发程序崩溃或系统资源不足。
为避免内存泄漏,应该在分配内存后及时释放不再使用的内存。
错误四:使用未定义变量使用未定义的变量是C语言中常见的错误之一。
在使用变量之前,必须为其声明和定义适当的类型。
如果使用了未定义的变量,编译器将无法识别该变量并抛出错误。
因此,在使用变量之前,务必确保其已经被正确定义。
错误五:越界访问数组在C语言中,数组是一个非常重要的数据结构。
然而,访问数组时经常会发生越界错误。
越界访问数组指的是试图读取或写入数组的元素时,访问到了数组范围之外的内存空间。
这可能导致程序崩溃或者产生不确定的结果。
为避免越界访问数组,应该始终确保数组索引在合法范围内。
错误六:忘记使用break语句在C语言的switch语句中,每个case分支结束后应该使用break语句,以确保程序执行完当前分支后跳出switch语句。
如果忘记使用break语句,程序将会继续执行下一个case分支,导致逻辑错误。
C语言常见错误集合大全-完整版-程序员必备手册5篇
C语言常见错误集合大全-完整版-程序员必备手册5篇第一篇:C语言常见错误集合大全-完整版-程序员必备手册C语言的最大特点是:功能强、使用方便灵活。
C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。
看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。
1.书写标识符时,忽略了大小写字母的区别。
main(){ int a=5;printf(“%d”,A);} 编译程序把a和A认为是两个不同的变量名,而显示出错信息。
C认为大写字母和小写字母是两个不同的字符。
习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main(){ float a,b;prin tf(“%d”,a%b);} %是求余运算,得到a/b的整余数。
整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;c=“a”;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。
C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。
如在BASIC程序中可以写if(a=3)then … 但C语言中,“=”是赋值运算符,“==”是关系运算符。
如: if(a==3)a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。
由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
C语言常见错误分析汇总
C语言常见错误分析汇总C语言是一种广泛应用的编程语言,但由于语法相对复杂,初学者容易犯一些常见的错误。
下面将汇总一些常见的C语言错误,以便帮助初学者更好地理解和避免这些问题。
1.语法错误:C语言对语法要求非常严格,一些错误的语法表达会导致编译错误。
例如,缺少分号、括号不成对等。
2.逻辑错误:这类错误通常是代码逻辑错误,导致程序运行结果与预期不同。
例如,条件判断错误、循环错误等。
3.变量未初始化:在使用变量之前,未对其进行初始化操作会导致不确定的结果。
这种错误可能会导致程序崩溃或产生意外结果。
4.数组越界:在C语言中,数组的下标从0开始,如果使用了超出数组范围的下标,会导致越界错误。
这可能会修改其他内存空间的值,导致程序错误。
5.内存泄漏:动态分配内存后没有正确释放会导致内存泄漏。
这在长时间运行的程序中可能导致内存耗尽。
6.不匹配的数据类型:数据类型不匹配会导致计算错误或编译错误。
例如,对整型变量使用浮点数运算符,或使用未定义的数据类型。
7.空指针解引用:解引用空指针会导致程序崩溃。
在使用指针之前,一定要确保其指向有效的内存空间。
8.死循环:循环条件错误或循环体内没有正确的终止条件会导致死循环,程序无法正常退出。
9.多次释放同一块内存:多次释放同一块动态分配的内存会导致程序错误或崩溃。
10.缺少返回语句:在函数中缺少返回语句或返回语句在多个分支中没有覆盖所有情况,会导致未定义的行为。
11.使用未定义的变量:在使用变量之前,必须先定义该变量。
否则会导致编译错误。
12.逻辑短路错误:逻辑运算符中,逻辑短路原则是如果已经可以确定逻辑表达式的结果,后续的表达式不会被执行。
如果依赖于后续表达式的计算结果,会导致逻辑错误。
13.误解优先级和结合性:C语言中运算符有优先级和结合性,如果不理解运算符的优先级和结合性,会导致计算错误。
14.使用未声明的函数:在调用函数之前,必须先声明函数。
否则会导致编译错误。
15. 不正确的格式化字符串:在使用printf等函数进行格式化输出时,必须提供与格式字符串匹配的参数,否则会导致未定义的行为。
C语言入门易犯错误总结
C语言入门易犯错误总结
C语言初学者易犯错误
如果你是一个初学者,当你的C程序发生了错误,你要相信你自己是错的,因为你犯错误的可能性远远大于书本以及开发工具的错误。
查看错误提示
a)undeclared:可能错误为1,5,6, 8
b)expected…..expression:3,7
c)expected identifier or '(' : 2
d)extraneous closing brace…..: 2
e)redefinition of….. : 4
对应常见错误:
1.使用了未定义的变量。
2.括号匹配错误(例如,{}没有一一配对)。
3.标点符号使用错误(例如,使用中文的分号,双引号,单引号)。
4.重复定义变量(例如,intnum,num;)。
5.单词拼写错误(例如,将main写成了mian)。
6.使用了函数库中的函数,忘记引入对应的头文件。
7.忘记用分号分割语句。
8.自定义函数未声明。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初学C语言的人最容易犯的错误集锦(二)
下面的代码用来判断用户输入的年份是否是闰年:
#include <stdio.h>
main()
{printf("请输入年份:");
int a,k;
scanf("%d",&a);
k=(a%4==0&&a%100!=0)||(a%4==0&&a%400==0);
if(k=0)
printf("不是闰年");
if(k=1)
printf("是闰年");
system("pause");
}
能看出程序有什么问题吗?为什么无论输入什么都显示“是闰年”?
很明显,程序中判断k是否等于0或者等于1的时候错误的使用了“=”进行值的相等判断而不是“==”。
在C语言中“k=1”不仅是“把k变量赋值为1”,而且如果把“k=1”当作表达式的话“k=1”还会有返回值,它的值就等于k赋值以后的值。
=====================================================
如果还不明白的话跟着我来看一个例子,试验代码如下:
int i=3;
printf("%d/n",i==5);
printf("%d/n",i=5);
上面的代码执行结果如下:
5
我们来分析一下上面代码,第二行是打印“i==5”的值,由于i=3,所以i等于5,而C语言中“不等于”的值是0,所以第一行打印0;第三行是首先执行表达式“i=5”的值,这个表达式首先将i赋值为5,然后“i=5”也是有返回值的,它的返回值就是变量i的值,所以第三行会打印出5。
===========================================================
“k=1”的值为k的值,而k等于1,所以“k=1”的值就是1,而1等于TRUE,所以
if(k=1)
printf("是闰年");
就永远都会执行了。
同样“k=0”的值为k的值,而k等于0,所以“k=0”的值就是0,而1等于FALSE,所以
if(k=0)
printf("不是闰年");
就永远都不会得到执行了。
明白了这个道理,我们以后在if语句等地方使用“==”的时候千万不要误写成“=”,可是“人有失手,马有乱踢”,我们总会不经意的犯这样的错误,而且这样的错误很难查找,那么能不能从根本上防范这种错误呢?有经验的C/C++开发人员编写类似于上面判断闰年的代码
的时候一般会这么写:
#include <stdio.h>
main()
{printf("请输入年份:");
int a,k;
scanf("%d",&a);
k=(a%4==0&&a%100!=0)||(a%4==0&&a%400==0);
if(0==k)
printf("不是闰年");
if(1==k)
printf("是闰年");
system("pause");
}
看出差别来了吗???好像没啥差别呀?仔细看:
if(0==k)
printf("不是闰年");
这里将“k==0”颠倒成了“0==k”,这有什么用吗?请上眼!比如编程的时候我将“==”误写成“=”有什么后果呢?
if(0=k)
printf("不是闰年");
编译的时候编译器会报告“if(0=k)”这行代码有错误,因为0是一个常量数字,不能设置它的值。
这样通过将待判断表达式的值放到变量之前的这样的方式就可以“打好预防针”,为防止失误起到了作用。
这种技巧是有经验的开发人员经常使用的,因此如鹏网的杨中科老师建议大家在开发过程中也培养起这样的习惯,而且等你毕业求职面试、笔试的时候,如果你写出这样的代码风格的话,考官一定会认为你是一个有经验的开发人员,这样的话你得到offer还不容易吗?。