2023年全国计算机二级C语言考试必考重点知识总结_第1页
2023年全国计算机二级C语言考试必考重点知识总结_第2页
2023年全国计算机二级C语言考试必考重点知识总结_第3页
2023年全国计算机二级C语言考试必考重点知识总结_第4页
2023年全国计算机二级C语言考试必考重点知识总结_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2023年全国计算机二级C语言考试必考重点知识总结 TOC o 1-5 h z C语言知识点总结1一、常量3二、标识符4三、变量4四、表达式5五、输入输出函数8六、C语言的语句9七、C程序的基本结构10八、选择结构语句10 if(表达式)语句1 else语句 210条件运算符表达式1?表达式2:表达式311switch 语句11九、循环结构12for 循环语句12while循环语句do while循环语句13十、数组13十一、字符串函数15十二、函数 循环语句:for语句while语句do while语句复合语句:用花括号将以上任意语句括起来构成一条复合语句。七、C程序的基本结构void ma

2、in()(声明部分:用来定义变量和声明自定义函数的原型,需以“;”结 尾,如int x;执行语句部分:第六点里介绍的各种语句,如x=3; printf(d”,x);)main函数外可写自定义函数。如int max()(return 0;)八、选择结构语句 if(表达式)语句1 else语句2如果if语句的圆括号内的表达式值为非0,则执行语句1,值为0 则执行语句2o表达式可为任意表达式,if语句执行的实质是判断表达式的值是否为0来决定执行语句1还是语句2o另外请在此处表 达严重关切,不管是高手还是菜鸟经常会把判断两个数相等 的符号=写成了一个等号“二”成为了赋值运算,这样的写法不会引发编译错误

3、,但结果会与原意大大不同,所以考 试前请再三提醒自己。语句1和语句2都只能是一个语句,若要跟多条语句,切记 用一对。括起来,构成复合语句;也不要随便在圆括号后加,因“;”构成一条空语句,这会使后面跟的语句1 不再属于if语句的组成部分。if语句的三种结构.单边:if(表达式)语句.双边:if(表达式)语句1 else语句2.多层(重点掌握):if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3 else语句n条件运算符表达式1?表达式2 :表达式3若表达式1的值非0,则取表达式2的值做为整个表达式的值,否则取表达式3的值为整个表达式的值。如34? 1:2该表达

4、式的值为2switch语句switch(表达式)case表达式1: 语句case表达式2:语句 case表达式n: 语句default:语句)语句执行过程:先计算表达式的值,然后判断该值与表达式1到 表达式n中的哪个相等,若与表达式i的值相等,则执行表达式i 后的所有语句,当遇到break;语句时结束整个switch语句的执 行。表达式1到表达式n的值都不相等的情况下执行default后跟 的语句。每个case后可跟多条语句。九、循环结构 for循环语句for(表达式1;表达式2;表达式3)循环体语句语句执行过程:.计算表达式1.判断表达式2的值是否为0,若为0,语句执行结束,若不为 0,进入

5、步骤3.执行循环体语句Q需注意的是循环体语句只能有一个语句, 若要包含多个语句要用一对括起来,构成一条复合语句, 此处也不要随便加上“;”,因一个“;”可构成一条空语句, 这会使得后面真正的循环体语句不属于for循环语句的部分)。进入步骤4.计算表达式3,然后重新进入步骤2 while循环语句do while循环语句while(表达式)循环体语句执行过程:.判断表达式的值是否为非0,若是进入步骤2,否则结束语句 执行。.执行循环体语句,重新回到步骤1。do循环体语句while(表达式);执行过程:.执行循环体语句,进入步骤2.判断表达式的值是否为非0,若是重新回到步骤1,否则结束 语句执行。这

6、里要注意的地方跟for语句一样,即循环体语句只能有一个语 句,若要包含多个语句要用一对括起来,构成一条复合语句, 此处也不要随便加上“;因一个可构成一条空语句, 这会使得后面真正的循环体语句不属于while循环语句的部分, 另外do while循环的喇hile (表达式)后是要加“;”的。 break语句:放在循环体内实现的功能是结束其所在的那层循环 的执行。十、数组定义格式:数据类型数组名整型常量;如inta10;定义了一个整型数组,数组名为a,这个数组含有10个元素。引用数组元素:格式:数组名下标切记下标值从0开始。下标可为常量,表达式,变量等,如inti=3; a0=5; a3*2=9;

7、 ai=7;初始化:数据类型数组名整型常量产数据表列卜将数据表列的各个值依次赋值给数组的各个元素。如inta5=0,2,3,4;则 数组a各元素a0到a4的值分别为0, 1, 2, 3, 4 遍历数组元素数组定义后,我网不能对数组进行整体的操作,如inta10;不能 用a=3这样的操作将数组的各元素都赋值为3;而只能一个一个 元素的进行赋值,如a0=3;al=3;a=3a9=3;当然此时我 们就可以借助于一个for循环来控制下标的变化从而对数组的各 个元素进行赋值for(i=0;i字符型数组char str20;字符型数组里的各个元素存放的是字符。str3=,A,;十一、 字符串函数gets(

8、字符数组名或字符指针变量);如 char str10,* str2; str2二str;则 gets (str);或 gets(str2);都是接 收用户输入的字符串如“ABC”存入到字符数组str中puts(字符数组名或字符指针变量或字符串常量);如 char str10=china”; char *str2;str=str2; 则 puts (str);或puts(str2);或puts(china);都会在屏幕上打印出chinastrlen(字符数组名或字符指针变量);字符串测长函数char str20=,hello worldint len;len=strlen(str);得出的结果是

9、 len 的值为 12strcat(字符串1的地址,字符串2的地址);将字符串2的内容连接到字符串1的尾部。char strl 20=ABC,str220=xyz”;strcat(strl,str2);则程序运行的结果是strl内存放的字符串变为ABCxyz,当然 str2存放的字符串还是xyz。strcmp(字符串1的地址,字符串2的地址);比较串1和串2哪个比较大。比较大小的依据是,两个字符串从左往右相应位置上第一个不相等的字符ASCII码值之差。char strl 20=ABCE,str220=ABDE;int i;i=strcmp (strl,str2);第一个不相等的字符为strl的

10、C和str2的D,而二者相 差-1,故-1做为strcmp函数执行的结果返回到被调用的位置, 该位置位于赋值表达式内,故将其值赋值给i,即此时i的值 就是-1.strcpy(字符串1的地址,字符串2的地址);将字符串2的内容复制到字符串1内。char strl 20=ABC”,str220=xyz;strcpy(strl,str2);此时strl的内容为xyz,当然str2的内容没变 strcpy(strl,uvw);此时 strl 的内容又变成了 uvw 。十二、 函数函数定义函数类型 函数名(形式参数列表)(内部变量定义和声明部分执行语句)如:int max (int x , int y

11、)z= x y ? x : y ;return ( z );)注意点:.函数类型是指返回值的类型,即要与return语句后跟的表达式的值 的类型一致。若函数类型为void则说明该函数无返回值,即函数体 里不能出现return语句.形式参数列表里定义的变量要记得给它们指定类型,而且如果同时 要定义多个,应在每个前面都分别指定类型名,而不能写成intx,y;.函数体里能写的语句跟main函数一样,在开头可定义所需要的变 量,后面跟上一堆执行语句。函数调用流程以上面的函数为例,在main函数进行调用:void main () int a, b, c;scanf ( %d%d” , &a, &b);p

12、rintf ( %d” , max (a, b);或 c=max (a, b) ;printf ( %d,c)以 上两种方法都会在屏幕中打印出a, b间的较大值。调用函数的格式函数名(实际参数列表);调用的时候像什么函数类 型,形式参数的类型就不要加上去了。max (a, b)中111ax就是函数名,写上变量名a, b是实际参数列表,执行这个调用语句时,会先把a,b的值给相应位置的形式参数即执行了 x=a, y=b这样的操作,然后开始 执行max函数的函数体的语句。当max函数体里执行到一个return 语句时,则max函数结束执行,将return后的表达式的值返回给main 函数调用max函

13、数的那个位置,即若上面a=3, b=5则max (a, b) return 后的表达式的值应该是5也就是说执行完max后把5返回到调用max 的位置可看成printf( %d,5);或另一种解法的c=5。十三、 指针指针变量的声明:类型名指针变量的声明:类型名指针变量名;通过指针变量访问它所指向的普通变量的值先将普通变量的地址赋值给指针变量,再通过指针运算符*得 到普通变量的值。int *p,x,y;x=3;p=&x;则printf(“%d”,*p);会打印出3即x的值y=*p;则y的值变为3 *p=5;则x的值变为5指针变量加上(减去)一个位移的效果若指针变量存入的是数组元素的地址,则其加一

14、减一得到的麦那个数组元素下一个或前一个元素的地址。int a10; p=&a3;*p得到的是a3的值。若p+;此时p存放的是a4的地址&a4; *p得到的就是a4 的值。或P-;止匕时p存放的是a的地址&a,*p得到的就是a 的值。行指针.主要是对于二维数组来说的,二维数组每行都有自己的地址,第0行地址用 数组名 表示,第i行地址为 数组名+i;而想 要得到二维数组里一个元素的地址,必需先得到其所在行的 地址,然后再由那个地址得到元素的地址,比如说int a34;定义了一个二维数组,该二维数组第0行的地址为a, 第1行的地址为a+1,第2行的地址为a+2,想从行的地址得 到元素的地址,需在行地

15、址前加上指针运算符*,即*a就 是第0行首个元素的地址即a00的地址,而a0的地址 就是在a00的地址基础上加上位移量2,即*a+2,然后想 得到a0这个元素的值呢就再加上一个指针运算符“*”, 即*(*a+2),类似地,想得到a2这个元素的值呢就是 *(*(a+2)+2).定义行指针变量:类型名(*变量名)数组长度;如int (*p)4,a34; p=a;此时就可把p当成a来用,用法同上 所述。判断是否合法访问数组元素:若是指针法访问,判断指针后跟的16 TOC o 1-5 h z 十三、指针18十四、宏定义20十五、结构体, 共用体, 枚举类型21十六、TurboC的使用错误!未定义书签。

16、是否地址;若是下标法访问,判断下标有无越界。函数指针:函数名即为函数的地址(指针)i.函数指针变量的定义:类型名(*变量名)(形参列表);如int 1E 1E赋值:指针变量二函数名;设有个函数其函数名为max,则要将该函数的地址给p的话只要执行如下语句即可p = max;指针数组:指针数组的数组元素都是指针变量,是用来存放变量的地址的,定义格式为 类型名*变量名数组长度;如int*p10;指向指针的指针:指针变量也是一种变量,故在内存中也有对应 的一个地址,而要存放指针变量的地址,就要求助于用来存放指 针变量的地址的指针变量,定义格式 类型名*变量名;如int *pl; int *p2; in

17、t a=3;可进行赋值 pl=&a; p2=&p 1;则 a 、 *pl 和 *p2的值都是3.十四、 宏定义无参宏定义#define标识符 值定义后,出现所定义的标识符的地方都将以定义时指定的值来代替。#define M 2+3main() int x;x=M*M;则x的值为2+3*2+3=11若想得到的结果是(2+3)*(2+3)则定义时也写成这样#define M (2+3)注意#define、标识符、值之间都要用空格隔开,且宏定义结 尾不需加分号。带参宏定义#define标识符(参数表)值#define S(x,y) x*ymain() int a=3,b=4,c=5,d=6;prin

18、tf(a*b=%dnn, S(a,b);此时会打印出 a*b= 12 printf(”a+b*c+d=%dn,S(a+b,c+d);此时会打印出a+b*c+d=29,带参宏定义执行时是将a+b这样一个表达式代替 x, c+d这样一个表达式代替y,所以S(a+b,c+d)进行的是 a+b*c+d的运算,而不是将a+b的值给x, c+d的值给y然后 再做x*y,这点、跟函数调用传递参数是不一样的。)自定义类型名typedef:对已存在的类型名取一个外号。基本格式:typedef原类型名新类型名;typedef int INTEGER;则 int a,b;等价于 INTEGER a,b;typede

19、f int NUM10;则 inta10;等价于 NUM a; a 即为 一个有10个元素的数组的数组名。typedef int * INTEGER;则 int *a,*b;等价于 INTEGER a,b;十五、 结构体,共用体,枚举类型结构体i.结构体类型的定义及变量的定义struct 结构体名类型成员1;类型成员2;类型成员n;变量名;如struct student long num;char name10;int score4;stl;定义类型时同时定义变量struct student st2;定义类型后,用类型名定义变量还有一种struct long num;char name 10;

20、int score4;st3;不给类型名,直接定义变量ii.结构体变量所占字节数:各成员各占字节数之和,如以上stl,st2,st3 的字节数皆为 10+20+2*4=38in.结构体变量初始化:struct student a=20030001,“张三”,70,75,80,85;结构体数组定义及初始化:struct student a3=20030001Jzhang89,90,91,92,20030002J Hu ,68,69,70,71,20030003,li,57,58,59,60;v.v.结构体变量成员的访问结构体变量名.成员名如stLnum使用结构体类型的指针:(*结构体指针名).成

21、员或结构体指针名成员名struct student *st; st=&stl; st-num C(*st).num共用体共用体类型的定义及变量的定义union共用体名类型成员名1;类型成员名n;变量的定义与结构体类似,也有三种方法。union dataint i;char ch;float f;dl;定义类型时同时定义变量union data d2;定义类型后,用类型名定义变量unionint i;char ch;float f;d3;不给类型名,直接定义变量ii.共用体变量所占字节数:各成员所占字节数的最大值,如工dl,d2,d3所占字节数皆为4.(单精度浮点型变量所占字节数多为4) .共用

22、体变量成员的访问.共用体变量名.成员名如dl.i.使用共用体类型的指针:产共用体指针名).成员或共用体指针名成员名union data *dd; dd=&dl; dd-i 或(*41)上iv.共用体成员的值:由于共用体各成员共用同一段内存区,故同一时刻只有一个成员的值是正确的。如dl.i=5;dl.ch=,a,;则此时dl.i的值就不是5 了,而是其他值了,dl.ch的值是“枚举类型.枚举类型的定义:enum枚举名枚举元素名1,枚举元素名2,,枚举元素名 n);.枚举元素的值:默认值分别为0、1、n-1,枚举元素的值也可在定义时重指定,对于没有指定值的元素,按顺序加1如 enum weekda

23、ysun=7,mon=l,tue,wend,thur,fri,sat;贝Jj sun 值 为7, mon值为1, tue值为2, wend值为3, thur值为4, fri 值为5, sat值为6常量数字常量普通数字:1, 35, 2.7指数形式:2.45e-2等价于2.45*10-2注意e大小写皆可,e前面的数字不能省,就算是1也不能省,后面的数字一定要 是整数长整型,单精度浮点型:3235L, 32.5F分别表示3235是长整型数据,32.5是单精度浮点型左,若不写上L, F则表示 3235是整型,32.5是双精度浮点型,L, F大小写皆可字符常量.普通字符常量:用学号把一个字符括起来,如

24、么?,.转义字符常量:一对单引号括起来并以叭”开头的字符序列, 如,或(回车)、123,(8进制123对应的字符),x23,(16进制 23对应的字符)字符串常量用一对双号把一个字符序列括起来,如“ABCef”,系统存 放字符串常量,每个字符分配一个字节,各字符所占字节紧邻, 并且字符串末尾会给再开一个字节里面放一个NT做为结束标o符号常量定义格式#define符号常量名 符号常量值,如#deflneN20 则定义了符号常量N,其值为20,注意符号常量名和符号常量值之间是用空格隔开,而不是写上二号,#define和符号常 量名之间也有空格的。标识符命名规则以数字,字母,下划线这三类字符组成,性

25、只能以字母或下划 线开头,而不能也数字开头,关外不能将关键字做为标识符。32个关键字表在P365附录B变量名,函数名,符号常量名全都是标识符三、变量变量的定义格式类型名变量名;如int a;定义了一个整型常量a。变量名是由人类随便定义 的,符合命名规则的前提下,爱写啥就写啥。所以什么flag, cc,yl或者函数名fun,find等全部是自定的用来做为名字而已, 没有更特别的意义。类型名int整型,long长整型:用于存放整数,只是数值范围不同 float单精度浮点型double双精度浮点型:用于存放实数, 数值范围,精度不同char字符型:用于存放字符int a=3;定义的同时初始化a=6*

26、9;定义后在程序中进行赋值变量的值只有在赋值操作时才会被改变,即将其放在等号左边时才会改 变它的值,或自增自减操作:a=5,a+,a-像a+3并未改变a 的值,只是使用了 a的值而已.自增自减运算变量+,+变量,变量+,+变量,变量使变量的值自增1或自减1等价于 变量二变量+1变量=变量-1放于变量前后效果的区别:当自增自减运算做为表达式的一部分时,力力一放在变量前面是先自增自减再使用变量的值,放在变量后面则是先使用变量的值,再自增自减。如 x=3; printf(%d”,+x);贝ij相当于执行了 +x; printf(%d”,x);这样的操作所以打印出4再如 x=3; printf(%d”

27、,x+);则相当于执行了 printf(“d”,x); x+; 这样的操作,则打印出3,当然最后x的值还是4。四、表达式运算符和运算对象一个运算符都有若干个运算对象,如+必然要跟两个运算对 象才能进行加法运算:3+5o C语言里称需要跟n个运算对象 的运算符为n元运算符。一元运算符有:!,(类型名)二元运算符有:%(求余),=,+=,-=, *=, /=,%=, , =,=(等于),!=(不等于),&(且),|(或)多元运算符有:,,运算符的优先级和结合性i. 优先级:同一个运算对象左右两边若同时有两个运算符,则 这两个运算符优先级高的先进行运算。ii.结合性:若同一个运算对象左右两边的两个运

28、算符优先级相 同,则根据结合性判断先进行哪个运算,自左自右结合性的 先算左边的运算符,自右自左的先算右边的运算符。各运算符的优先级和结合性见P365附录C,强制类型转换格式:(类型名)表达式。将后跟的表达式的值的数据类型 转换为与圆括号内的类型名一致的类型。注意类型名一定要用()括起来。算术表达式.算术运算符:%(求余).由算术运算符加上运算对象构成算术表达式,如3+3*6-9/2值:跟我们小学时学的一样,就是表达式的计算结果整数除以整数结果取整数部分,故1/3得到的值是05%3结果为2,想想小学除法,求余得到的是余数不是商。赋值表达式赋值运算符:=,+=,-=, *=,/=,%=赋值表达式:

29、变量=表达式,如x=3+6, x+=6-9, x+=x*=3+4注意等号左边只能是变量复合赋值运算符的运算:以/=为例:x/二表达式 等价于x=x/(表达式)值:二号左边的变量最终的值,关系表达式.关系运算符: ,=,二=(等于),!=(不等于).由关系运算符加上运算对象构成关系表达式,如3=4, 2=a.值:满足相应运算符所指定的关系的值为1,否则为0,逻辑表达式.逻辑运算符:&(且),|(或),!(非).由逻辑运算符加上运算对象构成逻辑表达式,如3&4, x|!y.值:满足相应运算符所指定的关系的值为1,否则为0. 进行域 运算时,若左边的表达式值为1,则不再对右 边的表达式进行运算。. 进行&且运算时,若&左边的表达式值为0,则不再对右 边的表达式进行运算。逗号表达式i.逗号运算符:,ii.用逗号将各种表达式连续起来构成逗号表达式,如 3+4,a=9,8*aiii. 值:组成逗号表达式的各个表达式中的最后一个的值,如上例为8*a 题目:P711 17P8-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论