C语言易错点常考点总结

合集下载

C语言易错点考点(完整版)

C语言易错点考点(完整版)

总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”;源程序经编译后生成后缀名为“.obj”的目标文件;再把目标文件与各种库函数连接起来,生成“.exe”的可执行文件。

3)main函数,又称主函数,每个C程序有且只有一个main函数;无论main函数在整个程序中的位置如何,程序总是从main函数开始执行、也从main函数结束。

读程序时应从main 函数开始,然后从上往下读(碰到循环做循环,碰到选择做选择)。

4)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.5)bit是位是指为0或者1。

byte是指字节,一个字节=八个位.6)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCⅡ数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数定义中不可以再定义函数、即不允许函数嵌套定义。

4、算法可以没有输入,必须要有输出。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

7、任意合法的表达式一定有一个数值与它对应。

第一章1)C程序中对字母的大小写是敏感的,如A与a是不同的标识符。

注释:是对程序的说明,目的是提高程序的可读性,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,不允许嵌套注释。

3)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf都不是关键字。

迷惑你的地方If 是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

C语言笔试易错知识点

C语言笔试易错知识点

C语言笔试易错知识汇总作者:毛志敏Email:wuxin0529@一、数据类型1、有符号数与无符号数的差异例如:unsigned int i;for(i=5; i>=0; i--){printf ( "%d ", i);}此题为一个死循环输出,但是大家往往没注意到无符号数,导致错误的认为输出是5 4 3 2 1 02、整型与浮点型的差异整型的除法与浮点型除法的差异浮点型不支持求余操作,应注意整型数据之间进行==、>、<操作,可直接拿两个数相比,但是浮点型数据由于精度问题却不能直接相比,如果需要判断两个浮点型数据是否相等,可以如下操作if ( abs(x-y) < 0.000000001)3、各类型混合运算如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。

double ←── float 高↑long↑unsigned↑int ←── char,short 低不管最后结果如何,都会自动转换成赋值运算符左值的类型二、关键字1、switch case强烈提醒大家注意case后面有没有break,小心case穿透。

2、static声明静态变量,该类型变量在整个程序里只有一次初始化,然后便一直生存直到整个程序结束。

笔试中常有如下题目#include <stdio.h>int fun(int n){static int s = 0;s += n;return s;}void main(){int i;int sum = 0;for (i=0; i<5; i++){sum += fun(i);}printf("%d", sum);}此题目在主函数的for循环中多次调用fun函数,当第一次调用的时候,fun函数中的static变量s初始化为0,首次函数执行完后返回0(sum = 0);当第二次调用fum 函数时传入参数1,此时s已经存在,不需要初始化,函数返回1(sum = 1);同理第三次函数返回3(sum=4),第四次函数返回6(sum=10),第五次函数返回10(sum=20)。

C语言易错点归纳

C语言易错点归纳

C语言易错点归纳注:1)不考内容:条件编译、内部外部函数、位运算、共用体、枚举、typedef、ftell 2)并非所有内容都要完全掌握,大家自行把握3)本文档内容有任何问题一定要尽快联系刘子恒!三上里穂作品番号2015AVOP-152 シ十物語~AV女優に逢いたくて~ 2015-09-01AUKG-298 嫁姑レズ~百合の血族~三上里穂杉本美奈代 2015-08-01 AGEMIX-275 顔騎手コキ~次々と溢れ出る愛液をじゅるつきながらシゴかれる世界~ 2015-07-17AGEMIX-274 よつんばいフェラ6 ~フル勃起ち○ぽへの従属を姿勢で示す女たち~ 2015-07-17T28-405 満員電車でハメたがる発情痴女 2015-06-26TOMN-015 意識朦朧激ハードピストンSEX 2015-06-19DTRS-010 姉妹スワッピング 2015-06-01CESD-119 ドスケベ痴女の強制チンポ狩り12時間責められ好きな貴方に贈る至福の強制快楽射精100シーン 2015-05-25T28-401 「あなたがイクまでずっと見てる。

」いろんな場所で14人の美女たちがしてくれる極上ベロフェラ! 2015-05-22TOMN-012 鉄板フェラチオBEST Vol.2 2015-04-19YST-41 ナマ姦不倫10 2015-04-04MDYD-993 浮気をする日はノーパンです三上里穂 2015-02-13CESD-095 我を忘れるほど感じる失禁ディルド本気モードオナニー11人 2015-02-13YSN-422 僕が見ているのを気が付かないほどオナニーに熱中している母に「母さん、何してるの?」とわざとらしく聞いたらかなり動揺して「父さんには内緒にして」と即フェラしてくるもんだから調子に乗って色々、母と変態行為しちゃった件(笑) 2015-01-09第三章1、标识符:你给变量、宏、函数、结构体等起的名字。

C语言复习易错点总结

C语言复习易错点总结
if(x>0) y=1; else if(x<0)y=-1;
else y=0; 解 : y=(x>0?1:x<0?-1:0) 与 y=(x>0?1:(x<0?-1:0))等价。 2. 关于赋值表达式,将赋值号"="右侧表 达式的值赋给赋值号左边的变量。赋值表 达式的值为执行赋值后被赋值的变量的 值。形如 a=b ,b 会被转换为符合 a 的类 型,如果不能转换,要么报警告,要么报
} printf(“%d”,s); }t=1 应该放在第三行 此程序看似正确,可是运行结果却不对, 原因也是在 t=1 这个赋值语句,它的位置 应该在外层循环的里面,而不是在外面。 这种错误,对于初学者来讲,很容易犯, 却又发现不了,在程序调试的时候会浪费 很多时间,又会影响编程的自信心。 1.9 数组和整型或者实型变量不能重名 例如: main() { int a[10],a;…} 数组名为 a,其他变量的名字就不能再用 a。 1.10 数组输出时的错误 例如:现在想输出数组 a 中的所有数值。 int a[10]={1,2,3,4,5,6},i; for(i=0;i<10;i++) printf(“%d”,a[10]); 这个程序看似输出数组的十个元素,其实 只输出其中的一个元素。解决此类问题的
if(s==i) printf(“%d”,i); }是不是这样每一次循环 s 都变了?
程序运行的结果预期是 6 和 28,可是 实际上却没有任何结果。原因就是 s=0 这 个语句放错了位置,应该放在外层循环里 面,也就是每判断一个数都应该从 0 开始 累加。 再如:求 1!+2!+……+100! main() { int i,j,s=0,t=1; for(i=1;i<=100;i++) { for(j=1;j<=i;j++) t=t*j;s+=t;

c语言重点知识点及易混知识

c语言重点知识点及易混知识

易混及容易出考题的知识点1.变量的命名规则:(1)由英文字母、数字和下划线组成,其必须以英文字母或下划线开头;(2)不允许使用关键字作为标识符的名字;(3)标识符命名应做到“见名知意”;(4)标识符区分大小写。

2.在给自己定义的变量或函数取名时,不能用C语言的关键字,因此务必记住 C 语言的常见关键字(如main, if, else, for, switch, break, continue, typedef l include)3.注意运算符的优先级,例如赋值运算符V关系运算符V算术运算符4.进行逻辑运算操作时,如果&&的左侧已经为0,则其右侧的表达式不再计算,相似地,如果Il的左侧已经为1,则其右侧的表达式不再计算1.1f选择语句,注意在条件表达式的后面不要加分号,如下面的语句在语法上和逻辑上都是对的if (条件表达式)语句但if(条件表达式);语句在语法上没问题,但逻辑上就是错的,因为条件表达式的后面的分号可以看作是一个空语句,这个if语句的逻辑就是如果表达式成立,则什么也不做。

另外,if (a=0)语法上没问题,但逻辑上是错的,正确的写法应该是if (a==0)或if (0==a)6.注意if与else的配对,CISe总是与它最前面的if配对7.注意SWitCh语句,当某一个CaSe满足时的执行结果,注意有无break的区别8.自增、自减操作,注意表达式和变量的取值的差别9.注意for循环和while循环语句块内break或continue对程序执行的影响10.函数这一章,一定要注意函数的定义和声明的不同。

另外注意函数的实参传递给形参时,如果传递的是变量的值,则在函数体内形参的值发生变化,是不会影响到实参的值的。

但如果传递的是变量的地址,则形参的值改变后,实参的值是会改变的。

注意PPT及课本中的那个交换两个变量的值的swap函数11.注意定义数组时,数组的大小只能用常数;在引用数组的某一个元素的值时,数组的下标是从0开始的,且下标最大只能为数组大小减一12.字符串的末尾会补\013.自己动手编写PPT上讲到的几个字符串处理函数14.冒泡排序、选择排序,需要理解这两个函数并能自己动手编写15.结构体、共用体的成员在内存中的存放。

c语言易错知识点总结

c语言易错知识点总结

c语言易错知识点总结C语言易错知识点整理1.变量应先定义后使用,例如:main( ){ int i;for(i=1;i=10;i++)s=s+i;printf("%d",s);}程序中用到了变量s但是没有对其定义数据类型,会提示错误。

2. 自加自减(++ --)运算符的作用及表达式的值。

例如:① int i=3,j;j=i++;printf(“%d,%d”,i,j);此时i由1变成2,但是i++表达式的值为1,所以结果输出2,1。

② int i=3,k;k=++i;printf(“%d%d”,i,k);此时i由1变成2,但是i++表达式的值为2,所以结果输出2,2。

3.两整数相除结果是整数,例如5/3=1,不是1.333333。

4.赋值运算的过程:把赋值运算符左边的值转换成赋值运算符右边变量所要求的类型再赋值。

例如:double x;int y;x=1.5;y=x;因为y为整型变量,所以y的值为1。

5.注意赋值运算符和比较运算符的区别,例如:以下哪个表达式可以表示数x能被4整除( )A.x/4=0B.x%4=0C.x/4= =0D. x%4= =0答案为C。

6.变量的取值范围的表示。

例如:若有定义int x;用C语言描述3A.33 D.x5x3答案为D。

7.输入函数中同时输入多个数值型数据时,①若格式说明字符串中没有分隔符,那么空格、制表符和换行符可作为数据之间的分割符;int a,b;scanf(“%d%d”,a,b);则输入数据时应为3 4或3回车4或3Tab4,两数据之间可以用空格,回车和Tab键作为分隔符。

②当格式说明字符串中有普通字符时,输入时普通字符要原样输入;例如:int a,b;scanf(“%d,%d”,a,b);则输入数据时应为3,4,其他的输入形式都不对;例如:int a,b;scanf(“a=%d,b=%d”,a,b);则输入数据时应为a=3,b=4,其他的输入形式都不对。

c语言易错题总结

c语言易错题总结

C语言易错题总结
1. **变量未初始化**:在使用变量之前,一定要先进行初始化,否则其值是随机的,可能会导致程序出现错误的结果。

2. **数组越界**:C语言中数组的下标是从0开始的,因此,一个长度为n的数组的有效下标范围是[0, n-1]。

如果试图访问超出这个范围的下标,就会导致数组越界错误。

3. **类型转换错误**:在C语言中,需要进行显式类型转换。

如果不进行显式转换,可能会导致数据丢失或者结果不符合预期。

4. **逻辑错误**:这类错误比较隐蔽,通常是由于代码中的逻辑错误导致的。

例如,条件判断错误、循环控制错误等。

5. **指针错误**:指针是C语言中的一大难点,也是常见的错误来源。

常见的指针错误包括指针未初始化、野指针、指针越界等。

6. **内存泄漏**:在C语言中,需要手动管理内存。

如果在使用完内存后没有及时释放,就会导致内存泄漏。

7. **函数返回值未检查**:在调用函数时,一定要检查函数的返回值,以确定函数是否执行成功。

如果忽略了返回值检查,可能会导致程序出现错误。

8. **文件操作错误**:在进行文件操作时,如果文件不存在或者无法打开,就会导致文件操作错误。

在进行文件操作时,一定要先检查文件是否存在并且可读。

9. **语法错误**:这类错误是最常见的,通常是由于拼写错误、缺少分号、括号不匹配等原因导致的。

以上就是C语言中常见的一些易错题类型,为了避免这些错误,需要仔细检查代码,并养成良好的编程习惯。

C语言常见错误分析

C语言常见错误分析

C语⾔常见错误分析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;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;pscanf(“%d”,p);}26.混淆结构体类型与结构体变量的区别struct worker{long int num;char name[20];char sex;int age;};worker.num=187045;strcpy(/doc/449e33ccda38376baf1faefa.html ,”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);}C语⾔编程常见问题分析1.2.1 参数校验问题在C语⾔的函数中,⼀般都要对函数的参数进⾏校验,但是有些情况下不在函数内进⾏校验,⽽由调⽤者在外部校验,到底什么情况下应该在函数内进⾏校验,什么情况下不需要在函数内进⾏校验呢?下列原则可供读者参考。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言易错知识点主要包括运算符优先级及结合方向,如在复杂表达式中需特别注意运算符的优先级,以避免计算错误。此外,判断素数时,应正确实现循环和条件判断,以确保结果的准确性。在交换两变量值时,需通过指针操作实现,并注意避免值传递导致的错误。排序算法中,选择排序和冒泡排序的降序实现需正确比较元素大Байду номын сангаас并交换位置。同时,矩阵转置操作应确保行列索引正确对应,杨辉三角的实现则需注意数组初始化和元素计算规则。这些易错点要求程序员在编写C语言代码时具备扎实的语言基础和细致的逻辑思维能力,以避免常见错误并提高代码质量。
相关文档
最新文档