《2024年全国计算机等级考试二级C语言重点知识梳理汇编【精华版】.docx》由会员分享,可在线阅读,更多相关《2024年全国计算机等级考试二级C语言重点知识梳理汇编【精华版】.docx(24页珍藏版)》请在课桌文档上搜索。
1、2024年全国计算机等级考试二级C语言重点知识梳理汇编【精华版】1、结构化程序是由顺序结构、选择结构(分支结构)、循环结构三大结构组成。2、读程序时都要从main()入口,然后从main中第一行程序依次顺序往下读。3、计算机数据在电脑中保存是以二进制形式存放的。4、bit是位,二进制中的0或1。byte是指字节,一个字节二八位。5、编译预处理不是C语言,不占运行时间,不要加分号。6、definePI3.1415926;这个写法是错误的,后面一定不能出现分号。7、每个C语言程序中main函数有且只有一个。8、在函数中不可以再定义函数。但是函数中可以再调用函数。9、算法:可以没有输入,但是一定要有
2、输出。10、break可用于循环结构和SWitCh语句。11、逗号运算符的级别最低,赋值的级别倒数第二。第一章C语言的基础知识第一节1、C语言编写的程序称为源程序,又称为编译单位。2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。3、一个C语言程序有且只有一个main函数,是程序运行的起点。第二节1、VC是软件,用来运行写的C语言程序,上机考试的系统为VC6.Oo2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.cobj.exe)这个过程中注意.C和.obj文件时无法运行的,只有.exe文件才可以运行Q(常考!)第三节1、标识符(必考内容):合法的要求是由字母,数字,下划线
3、组成。并且第一个必须为字母或则是下划线,不可以是数字。2、标识符分为关键字、预定义标识符、用户标识符。关键字:不可以作为用户标识符号,都是小写。Inain、define、scanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。预定义标识符:背诵definescanfprintfincludeo记住预定义标识符可以做为用户标识符。用户标识符:基本上每年都考,详细请见书上习题。第四节1、十进制转换第五节1、C语言中只有八、十、十六进制,没有二进制。但运行时,所有进制都要转成二进制来处理。a、C语言中的八进制规定要以O开头。018的数值
4、是非法的,八进制不可以出现8。b、C语言中的十六进制规定要以OX开头。要看懂OXff。2、小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。a、1.0在C语言中可写成“1.”b、0.1在C语言中可以写成“.1”3、实型数据的合法形式:a、2.333e-l就是合法的,且数据是2.333X10工b、考试口诀:e前e后必有数,e后必为整数。请结合书上的例子。4、整型一般是4个字节,字符型是1个字节,双精度一般是8个字节:longintx;表示X是长整型。unsignedintx;表示X是无符号整型Q第六、七节核心:表达式一定有数值!1、算术表达式:+,*,/,%,考试重点为/和这两个。考试
5、一定要注意:两边都是整型的话,结果取整。3/2的结果就是1.如果有一边是小数,结果为小数。3/2.0的结果就是0.5“”符号请一定要注意是余数,考试最容易算成了除号。“”符号两边要求是整数。不是整数就错了。2、赋值表达式:赋值表达式的结果是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。1、intx=y=10:;错啦,定义时,不可以连续赋值。2、intX,y;x=y=10;对逾上定义比或后,可以连续赋值。3、intx=7.7;对滴,X就是7。4、floaty=7:对滴,X域是7.0。5、赋值的左边只能莫一个菱塞x+y=10;这个写法是错的。3、复合的赋值表达式:inta=2;.嶷蜜亍普
6、霾在嘿船指打上括号。变成(2+3)再运算。4、自加表达式:B、目减表整式二假以羔5,+(6),a+(为5);口快:+茬刖先加后南,+左后先角后方口。5、逗号表达式:优先级别最低(表达式的数值逗号最右边的那个表达式的数值)的,44Xlz4 , 33CO , 22 tv2(-Z Za 这O O42边医装6、补充:1、空语句不可以随意执行,会导致逻辑错误。2、注释是最近几年考试的重点,注释不是C语言,不占运行时间,没有分号。不可以嵌套!赛皆犷定需翻取3、强制类型转换:a、一定悬(Jnt)a不是inf(a),注意b、ffiM(int)(ab)和(int)a+b转型,后是把a转型再加b。4、三种取整丢小
7、数的情况:1)inta=1.6;2)(int)a;3)1/2;3/2;结果a为I整个数值取整O和1第八节字符:有单单和转义字符之分。D字符数据的合法形式:单单(单引号里面单个字符),0,的ASCIl数值表示为48,a的ASCn数值是97,A的ASCn数值是65oJM二般考试表示单个字符错误的形式:65,1记住口诀:单单。J舞歌替攀麓翻为留主“A甥8相互之间一般是相差32。2)转义字符:单引号里面用加上另外字母形成新的组合。转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。一般转义字符:背诵0、n、Wo八进制转义字符:141,是合法的,前导的O是不能与的。并且X是力忑进制转义字符:6十
8、才是合法的,前导的O不能写,3、字符型和整数是近亲:两个具有很大的相似之处第九节1)位运算的考查:会有一到二题考试题目。(必考题型)例工:4-chara=6,b;b=a2;解题时:先要把a化成二进制,辕撤位运算。-W2:一定要记住,异或的位运算符号”,oOI=IoOO=Oo襄3:求没有舍去数据的时候,左移一位表示乘以2;第二章第一节:数据输出(一)(二)1、使用printf和scanf函数时,要在最前面加上#include“stdio.h2、printf可以只有一个参数,也可以有两个参数。(选择题考过一次)这么背就可以。3、printf(“第一部分”,第二部分);把第二部分的变量、表达式、常量
9、以第一部分的形式展现出4、printf(a=%d,b=T,12,34)考试重点!记住:是将第二部分的12和34以第一部分的形式在终端(也就是黑色的屏幕上)显示。考试核心为:一模一样。在黑色屏幕上面色示为1a=12,b=34printf(a=%d,nb=%d,12,34)那心俞J结果就是:a=12,b二345、intx=017;(一定要弄清楚为什么是这个结果!过程很6、, , ” O X d# %7f51 XIoo7 IfO X %一定要背诵的%d表示内容格式说明整型 int%c格式说明表示内容字符char%ld长整型longint%s字符串%f浮点型float%0不带前导O八进制%lf浮点型d
10、ouble%#0带前导O的八进制%输出一个百分号%x不带前导Ox十六进制%5d输出要求有五位%ttx带前导Ox的十六进制.23.)12 个25 23J23两1.2)01点 1 四 篇地左揩(z(隼修s250(u%3( tf两tf五tf牌tfLtfL In的In的In结In为In为yjl;入5 一 5五2算.2舍第二部分123有三位,大于第第二部分123有三位,小于第123小数要求补足6位的,没有六第一部分指定小数三位,整个第一部分指定小数一位,整个1、scanf(a=%d,b=%d,&a,&b)(考试超级重点)考试核心为:一模一样。以第一个部分双引号里面为输入标准形式。终端输入为:a=12,b
11、=34才可把12和34正确赋值给a和bo2、scanf(%d,x,y);scanf的第二个部分一定要是地址(或是指针变量)!scanf(%d,%dw,&x,&y);注意写成这样正确!3、正确 错误4、Z为71位给Z为675、6、数1特别注意指针在SCanf的考察(近几年重点)例如:intx=2:int*p=&x;scanf(%,x);错误scanf(%d,p);scanf(,&p);错误scanf(u%d,*p)指定输入的长度(考试重点)终端输入:1234567X为y为3456,scanf(u%2d%4d%d,&x,&y,&z);终端输入:1234567由于1和2中间有空格,所以只有scanf
12、Ci%2d%4d%d,&x,&y,&z);X为1,y为2345,字符和整型是近亲:intx=97;printf(d,x);结果为97printfx);结果为a输入时候字符和整数的区别(考试超级重点)scanf&x);这个时候输入1,特别注意表示的是整scanf&x);这个时候输入1,特别注意表示的是字符1ASCII为整数48。7、补充说明:1)scanf(u%d%d%*d%d,&a,&b,&c);跳过输入的第三个数据。2)putchar,getchar函数的考查。前是输出一个字符,后是获得一个字符。3)交换两个数t=x;x=y;y=t0当成单词去背。第三章特别要注意:1、C语言中是用韭Q表示逻
13、辑真,Q表示逻辑假的。2、C语言有构造类型,没有逻辑类型。3、关系运算符号:注意8这个关系表达式是真的,所以98这个表达式的数值就是Io如76这个关系表达式是假的,所以76这个表达式的数值就是0b、考试最容易错的:就是intx=l,y=0,z=2;xyz是真还是假?带入为k2,从数学的角度出发肯定是错的,但是如果是C语言那么就是正确的!因为要10为假得到0,表达式就变成了02那么运算结果就是1,称为了真的了!c、等号和赋值的区别!一定记住“二”就是赋值,“二二”才是等号。做错了,我一定会强烈鄙视你!2)逻辑表达式:共有&Il!三种逻辑运算符号核心:表达式的数值只能为1(表示为真),或O(表示假
14、)。a、注意短路现象。考试比较喜欢考。详细请见书上例子,定要会做例1和例20b、表示X小于。大于10的方法。(考试非常容易错的)0x10是不行的(一定记住),他永远为真。(0x)&(xif(ab)t=a;a=b;b=t;d、if(ab)t=a;a=b;b=t;两个的区别,考试多次考独的if谙句:if(ab)t=a;准的if语句:if(ab)min=a;一elseInin=b;嵌套的if语句:if(ab? c: de? d: e;时多少? 答案为5求k的数值5)SWitCh语句:(我用了一年的时间才弄懂,考试重点)a)执行的流程一定要弄懂!上课时候详细的过程讲了,请自己一定弄懂!b)注意有bre
15、ak和没有break的差别,break在C语言中就是分手,一刀两断的意思。c) switch只可以和break一起用,不可以和continue用。d) switcH-X是整型常量,字符型常量,枚举型数据。case口:.不可以是变量。case2:.)e) switch是必考题型,请大家一定要完成书上的课后的switch的习题。6)goto语句,是关键,不可以随便使用,已经淘汰。第四章1)三种循环结构:a) for();while();do-while()三种循环。b) for循环当中必须是两个分号,千万不要忘记。c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。d)dcrwhi
16、1e()循环是至少执行一次循环。2)break和continue的差别(考试重点,一定会考)break:是打破的意思,(破了整个循环)所以看见break就退3)嵌套循环就是有循环里面还有循环,这种比较复杂,要一层一层耐心计算,一般记住两层是处理二维数组的。4)while(c=getchar()!=,n,)和while(c=getchar()!=n,)的差别先看a=3!=2和(a=3)!二2的区别:考试注意点:括号在这里的重要性。(!二号的级别高于二号所以第一个先计算3!=2)第一个a的数值是得到的1;第二个a的数值是3。5)如何整除一个数:i%5=0表示整除5i%2=0表示整除2,同时表示是偶
17、数!6)输入123,输出321逆序输出数据inta=123;while(i!=0)printfi%10);i=i10;)7)for只管后面一个语句:inti=3;H工娃i6;i+);循环控制这个空语句,空语句是搞环体!_,PHntf():请问最终打印几个#号?答案为一个!8)不停的输入,直到输入#停止输入!不停的输入,直到输入$停止输入!while(x=gelchar()!=#while(x=getchar()!=$)不停的输入,直到遇到?停止输入!解说:一定要注意这种给WhiIe(x=getchar()!=?)出了条件,然后如何去写的方法!9)for循环和SWitCh语句的和在一起的考题!1
18、0)多次出现的考题:(超级重点,一定会考)intk=lintk=l;while(k);while(k);printf(%d,k);printf(u%d,k);露果为0璘果为-1第五章I、函数:是具有一定功能的一个程序块,是C语言的基本组成单位。2、函数不可以嵌套定义。但是可以嵌套调用。3、函数名缺省返回值类型,默认为into4、C语言由函数组成,但有且仅有一个main函数!是程序运行的开始!5、如何判断a是否为质数:背诵这个程序!s(% t i a n r(i of r df i P1Ov 、2 -( Iif2in数a鼠 是 2不a+ci6、如何求阶层:n!背诵这个程序!intfun(intn
19、)intp=l;for(i=l;irintf(端是实参整个函数得到一个数值就是 Add函数的返回数值。程序是在从上往下顺序执 行,当碰到了函数add后, 把a, b的数值穿给调用函 数,程序暂时中断等待返 回数值。当得到了返回数 值后,再顺序的往下执行IQtadd (int x, inty) ”被调用函数7一,y是形式参数int z;函数返回数值是整型z=x+y;return ZJ就是这个add函数计算后得到的结果,就是函数返回给主程序 的返回数值。9、一定要注意参数之间的传递。实参和形参之间传数值,和传地址的差别。(考试的重点)传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化
20、就98%会改变实参的变化。10、函数声明的考查:一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称(可写,可不写,可乱写)。11、要求掌握的库函数:abs()Sqrt()、fabs()pow()Sin()其中pow(a,b)是重点。2,是由POW(2,3)是小的O第六章指针变量的本质:放地址。变量三要素:名称、内容、地址。1、int*p中*p和P的差别:简单说*p是数值,P是地址!*P可以当做变量来用,*的作用是取后面地址P里面的数值P是当作地址来使用。可以用在Scanf函数中:scanfe%d,p);口诀:取当前值,然后口诀:取当前值,然后2、*p+和(*p)+的差别:
21、(考试重点)*P+是地址会变化。再移动地址!木-如红的、(*P)+是数值会变化。再使数值增加1。rf、椀J题:int*p,a=l,3,5,7,9;p=a;,地址请问*p+和(*p)的数变动。*p+:本身为()+:本身为3,然后再把3变成4,地址不动。3、二级指针:*P:一级指针:存放变量的地址。*q:二级指针:存放一级指针的地址。常考题目:intx=7;int*px,*q=p;向你:*P为多少?*q为多少?*q为多少?再问你茯胃福噌圜竺同普徵&能存放一级指针的地址。4、三名主义:(考试的重点)数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)函数名:表示该函数的入口
22、地址。字符串常量名:表示第一个字符的地址。5、移动指针(经常加入到考试中其他题目综合考试)char*s=meikanshuwhile(*s)printfC%c,*s);s+;s+是地址移动,打印了一个字母后,就会移动到下一个字母!6、指针变量两种初始化(一定要看懂)力?法二:inta=2,*p=&a;/定义的回回初始化)方法二:inta=2f*p;(定义N后初始正)P=&a;7、传数值和传地址(每年必考好多题目)voidfun(inta,intb)int*b)intt;t=a;a=b;b=t;fb=t;main()intx=l,y=3,fun(x,y);printf(u%d,%d,x,y);y
23、);k个题目答案是1和3。传数值,fun是用变量接受,所以fun中的交换不会影响到main中的X和y。void fun (int *a, int t ;t=*a;*a=*b;main () int x=L y=3, fun (&x, &y) printf (%d, %d”, 外曰昌题目的答案 窗前加州指针至main中的X和 传地相形参的变化绝类整口会瞬里蓬缗丁会影响实参。8、函数返回值是地址,一定注意这个*号(上机考试重点)int *fun (int *a, int *b) 的函数运算结果是地址 if (*a*b) return a; else return b;main () int x=7
24、, y=8, *max;max = fun (&x, &y); 址,所以用max菜接收。 printf (%d, %d, )可以发现函数前面有个*,这个就说returna可以知道返回的是a地址。由于fun(&x,&y)的运算结果是地指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p9、考试重要的话语:的地方都可以用它等价的代替。例如:inta=2,*p=&a;*p=*p+2;(由于*P指向变量a,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是a=a+2第七章数组:像停尸房一样,一格一格的!地址连续,类型一致。1、一维数组的初始化:U , 5 t5 iJ5 , 4 ,4 ,乙 C
25、 , 33 3 ,CO , 22 ,2 ,0/ , 11 15 5TJ5a a a a 1111 n n n二, 法 法法尊 A区区口1! 面余 刖多2、一维数组的定义;inta5;重要考点,定义数组不可以是变量。intx=5,intax;不合法,因为个数是x,是个变量,71Frldefine/5_intaP合法,define后的的P是符号常量,只是长得像变量二维数组的初始化:110 t t t 的 inin为lninin多in个in列,后面一个默认趣去,东合法,赋值的个数合法,可以缺省行的不合法,不可以缺省4、补充:1)数组的重要概念:a10的讨论。(一维数组的讨论)r以表示数组名,是第一不
26、元素的地址,也就是元素a0的地址。(等价于&a)马上a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。a33的讨论。(二维数组的讨论)1lta表示数组名,是第一个元素的地址,也就是元素a00的地址。2a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。口心4、a 它们都是:噌主题二列元烹3、a是二维2)二维数组做题目的技巧:有一行行行二*MS就记, 蠡一二三骤这*sm 第第曩么这一题:,4,%浮第三列3-al45a2786 9 -翦琼卿哪衅京炉的第一个元素往后面跳一列,那E卷另第W堂矗脩舞第一个元素往后面
27、跳二列。那么隹,矍檄”箪蜃曲翁曾,一定是写成如上的格式,再去做3)数组的初始化,一维和二维的,一维可以不写数字,二维第二个一定要写出列,可以不写行。h2,聿螯。inta4=2,3,4合法。但4)二维数组中的行指针:二位数组名是行指针。intal2;其中a现在就是一个行指针,a+l跳一行数组元素。搭配(*)p2指针a0,al现在就是一个列指针。a0l跳一个数组元素。措配*P2指针数组使用5)还有记住脱衣服法则:(超级无敌重要)a2一变成*(a+2)Aa变成*ta+2)3再可以变成*(*(a+2)+3)这个思想很重要!其它考试重点1)字符串的Strlen()和StrCat()和StrCnIP()和
28、StrCPy()的使用方法一定要记住。他们的参数都是地址。strlen():统计字符串长度,以0为结束条件。strlen(wo0gualew)长度为2.strlen(aWogualew)长度为7Strcat():连接两个字符串。Strcpy():把后面的复制到前面StrCat(wo0ai”,heshang)连接后新的字符串为:WoheshangStrcmp():比较两个字符串中对应字符的ASCIIostrcat(abed“,abbbb”)运行结果是0的口诀:大大小小,不是比长度2) strlen和SiZeOf的区别也是考试的重点;3) definef(x)(x*x)和definef(x)x*x
29、之间的差别。替换的时候有括号和没有括号是考试超级重点。4) int*p;p=(int*)malloc(4);p=(int*)malloc(sizeof(int);以上两个等价。当心填空题目,InalIoC的返回类型是void*6)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目。要会作递归的题目7)链表中的节点是有两个域,一个放数值,一个放指针。8)函数指针的用法:口诀:使用时,有*就有括号。(*f)(3);这个括号一定要有。9)两种重要的数组长度:chara=a,b,c,;数组长度为3,字符串长度不定。SiZeof(a)为3。chara5=4a,b,c,数组长度为5,字符串长度
30、3osizeof(a)为510)SCanf不可以处理空格,gets可以处理。11)指针迷惑的考点:超级重点!charch=iamhandsome,;char*p=ch;问你*(p+2)和*p+2的结果是多少?1结果是这两个,想不通的同学请作死的想!想通为止!12)数组中放数组一定要看懂:inta8=l,2,3,4,4,3,2,2;intb5=0;ba3这个写法要看懂,结果要知道是什么?b4+,本身是0,运行完后,b4为1了。15)字符串的赋值:C语言中没有字符串变量,所以用数组和指针存放字符串:1、charch10=abcdefgh,;2、charch 10 = abcdefgh,;3、 ch
31、arch10 = a , b,d , e , f,g , h ;4、char*p= abcdefgh” ;5、charp=abcdefgh”;6、charch10;错了!数组名不可以赋值!考试重点ch=abcdefgh”;错了!不能够出现7、char*p=abcdefgh;大括号!16)字符串赋值的函数背诵:一定要背诵,当心笔试填空题目。把S指针中的字符串复制到t指针中的方法1、while(*t=*s)!=NULL)s+;t+;完整版本2、while(*t=*s)s+;t+;简单版本3、while(*t+=*s+);高级版本17) typedef是取别名,不会产生新的类型,他同时也是关键字考点
32、一:typedefintqq那么intX就可以写成qqX考点二:typedefint*qq那么int*x就可以写成qqX18) static考点是一定会考的!复习相关的习题。staticintx;默认值为0。intx:默认值为不定值。19)函数的递归调用一定会考!至少是2分。背诵的内容1、取别名:可能考2、预处理:一定会考3、全局变量:可能考4、static:一定会考5、分配对象:可能会考6、函数指针:可能会考7、递归调用:一定会考单单:单引号里面有单个!是合理的字符。字符是单引号字符串是双引号“a”。两大近亲:1、整型和字符型2、数组和指针三名主义:核心纲领:名称表示地址1、数组名:表示第一
33、个数组元素的地址。2、字符串名:表示第一个字符的地址。3、函数名:表示函数入口地址。脱衣服法则:a2变成*(a+2)a23变成*(a+2)3再可以变成*(*(a+2)+3)AASCII:每一个字符对应一个数字。为97A为65O为48生小孩符号:“考试重点break:一刀两断。continue:继续重头再来。移动不动:*p+是地址变化。(*P)+是地址不变,数值会变化。数星星:*p和*q的考查。做死的循环:关键是找出循环体是哪个!f-while(i10I_sum=sum+ii+;0)9do1ISUm=SUlnqi;i+;while(i100)Vfor(i=0;i100;i+)*sum=sum+i;越跳越开心:二位数组名a23中的a、*p二级指针p、(*p)中的P都是行指针。行指针加1,表示跳一行!