[其它]C程序设计复习资料.doc

上传人:sccc 文档编号:4662148 上传时间:2023-05-05 格式:DOC 页数:343 大小:1.85MB
返回 下载 相关 举报
[其它]C程序设计复习资料.doc_第1页
第1页 / 共343页
[其它]C程序设计复习资料.doc_第2页
第2页 / 共343页
[其它]C程序设计复习资料.doc_第3页
第3页 / 共343页
[其它]C程序设计复习资料.doc_第4页
第4页 / 共343页
[其它]C程序设计复习资料.doc_第5页
第5页 / 共343页
点击查看更多>>
资源描述

《[其它]C程序设计复习资料.doc》由会员分享,可在线阅读,更多相关《[其它]C程序设计复习资料.doc(343页珍藏版)》请在三一办公上搜索。

1、第一章 概 述【要点归纳】1、 C语言的特点C语言短小精悍,基本组成精炼、简洁。 32个标准关键字,45个标准运算符及9种控制语句。C语言运算符丰富,表达能力强。C语言数据结构丰富,结构化好。C语言提供了某些与汇编语言相似的功能,有利于编写系统软件。C语言程序可移植性好。2、 C语言标识符C语言中,允许用作标识符的字符有:l 26个英文字母(包括大小写)l 数字09l 下划线。C语言的标识符是满足如下条件的字符序列:l 只能由英文字母、数字和下划线组成。l 长度为132.l 必须以英文字母或下划线开头。C语言的标识符可以分为以下三类:l 关键字。C语言中规定了一批标识符,它们在程序中都代表着固

2、定的含义,不能另作他用。l 预定义标识符。这些标识符在C语言中也都有特定的含义,因此为了避免误解,建议用户不要把这些预定义标识符另作它用。l 用户标识符。3、 C语言风格C语言严格区分英文字母大小写。C语言用“;”作为语句分隔符。C语言中“”用于标识一组语句,构成复合语句。C程序书写格式自由,一行内可以写几个语句,一个语句也可以写在几行上。注释用来向用户提示或解释程序的意义。(注释部分允许出现在程序的任何位置。编译时,会忽略所有的注释符,即不对他们作任何处理。)4、 C程序构成一个C源程序由函数构成(函数是C程序的基本结构单位),其中至少包括一个主函数。main函数可以放在任意位置,C程序总是

3、从main函数开始执行,在main函数中结束。C程序中可以包含常量、变量、运算符和标识符。5、 C程序的结构C语言是一种结构化的程序设计语言,它提供了3种基本结构:顺序结构;选择结构;循环结构。6、 结构化程序设计模块化程序设计的思想是:按照自顶向下的原则,把问题逐层分解。即先从总体出发,把问题分成若干个大块,每一大块代表一个大任务;在此基础上,再对每个大块细化,把大任务变成若干个小任务,直到每个小任务都能用基本结构表示为止。在划分模块的过程中,应保证模块的单入口、单出口、完整性和独立性。从组织结构上看,一个C程序可以由若干个源程序文件组成,一个源文件可以由若干个函数及全局变量声明部分组成,一

4、个函数由数据定义部分和执行语句组成。7、 C程序设计步骤8、 C程序的开发过程编辑(生成c文件) 编译(生成obj文件) 连接(生成exe文件) 执行附:C语言中的关键字auto break case char const continue defaultdo double else enum extern float forgoto if int long register return shortsigned sizeof static struct switch typedef unionunsigned void volatile while【本节例题选编】1、 选择题【例1.1】一个

5、C语言程序是由 A一个主程序和若干子程序组成 B若干函数组成C若干过程组成 D若干子程序组成【例1.2】C语言规定,在一个源程序中,main函数的位置 A必须在最开始 B必须在系统调用的库函数的后面C可以任意 D必须在最后【例1.3】一个C程序的执行是从 A本程序的main函数开始,到main函数结束B本程序文件的第一个 函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束【例1.4】以下 是C程序的基本结构单位A文件 B语句C函数 D表达式【例1.5】以下 不是C语言的特点。A运算符丰富 B数

6、据结构丰富 C可以直接访问物理地址 DC函数包含的语句数目没有限制【例1.6】下列关于C语言标识符的叙述中正确的是 。A标识符中可以出现下划线和中划线(减号)B标识符中不可以出现中划线,但可以出现下划线C标识符中可以出现下划线,但不可以放在标识符的开头D标识符中可以出现下划线和数字,它们都可以放在标识符的开头【例1.7】以下几组选项中,均为不合法标识符的是 AA,P_0,do Bfloat,la0,_ACb-a,goto,int D_123,temp,INT【例1.8】以下叙述不正确的是 。A一个C源程序可由一个或多个函数组成B一个C源程序必须包含一个main函数CC程序的基本组成单位是函数D

7、在C程序中,注释说明只能位于一条语句的后面【例1.9】以下叙述正确的是 。A在C程序中,main函数必须位于程序的最前面BC程序的每行中只能写一条语句CC语言本身没有输入输出语句D在对一个C程序进行编译的过程中,可发现注释中的拼写错误2、填空题【例1.10】一个C源程序中至少应包括一个 。【例1.11】C程序编译后生成 程序,连接后生成 程序。【例1.12】C语言规定,标识符只能由 、 、 三种字符组成,而且,第一个字符必须是 或 。【例1.13】程序的3种基本控制结构是 结构、 结构和 结构。第二章 数据类型及其运算【要点归纳】1、 基本数据类型C语言的数据类型有基本数据类型和非基本数据类型

8、之分。数据类型基本类型构造类型指针类型空类型整 型字符型浮点型枚举类型数组类型结构体类型共用体类型单精度型双精度型2、 变量所谓变量就是在程序执行过程中,其值可以改变的量。变量有两个要素:l 变量名。l 变量值。C语言是一种强类型语言,它要求在使用数据之前对数据的类型进行说明。也就是说,在C语言中,所有变量必须先定义后使用。在定义的同时也可以进行赋初值操作,即初始化。定义变量的格式如下: 存储类型 数据类型 变量1,变量2,;3、 常量常量又称作常数,是指在程序运行过程中其值不能被改变的量。在C语言中,常量有不同的类型,如整型常量、实型常量和字符串常量等。整型常量l 十进制其形式是:dl 八进

9、制其形式是:0dl 十六进制其形式是:0xd整型数据在内存中是以二进制方式存放的,最高位为符号位,并以补码表示。将一个十进制整数转化为补码表示的方法如下:l 对于正数,其补码表示与原码相同。l 对于负数,其补码表示为它的反码加1;负数的反码为其绝对值的所有位(含符号 位)取反得到。对于用补码表示的数据,还原为原码的方法如下:l 对于正数(补码表示的符号位为0),原码与补码相同。l 对于负数,原码一定为负数,其绝对值为除符号位以外所有位取反后加1。实型常量实型常量又称浮点型常量,是一个用十进制表示的符号实数。实型常量表示形式有以下两种:l 小数表示方式l 指数表示方式注:e之前必须有数字,e后面

10、的指数必须为整数。字符常量字符常量又分为字符型常量、字符串常量、转义字符和符号常量四种类型。l 字符型常量字符型常量是指用一对单引号括起来的一个字符。l 字符串常量字符串常量是指用一对双引号括起来的一串字符。l 转义字符转义字符是C语言中一种特殊形式的字符。例:ddd 三位八进制xhh 二位十六进制l 符号常量C语言允许将程序中的常量定义为一个标识符,称为符号常量。例:#define PI 3.14159264、 运算符算术运算符+、*、/、%自增和自减运算符+、注:自增和自减运算符只适用于单个变量,而不能用于其他表达式。赋值运算符复合的赋值运算符+、*、/、%关系运算符、=、=、!=逻辑运算

11、符!、&、|逗号运算符表达式1,表达式2条件运算符c ? e1 : e2长度运算符sizeof()位逻辑运算符、&、|、5、 类型转换数据的混合运算和类型自动转换C语言允许不同类型的数据混合运算,但此时要遵循一定的规则,将运算符两边的操作数转换成共同的类型,具体转换原则是将运算符两边的数据转换成为它们之中数据最长的数据类型,以保证运算的精度不会低。强制类型转换(类型名称)表达式6、 C语言语句一个C程序应包括数据描述(由数据声明部分来实现)和数据操作(由执行语句来实现)。C语句分为以下五类:l 控制语句(9种)l 函数调用语句l 表达式语句l 空语句l 复合语句7、数据输出在C语言中可以使用p

12、rintf( )、putchart( )、puts( )等函数进行数据输出。注:在printf ()语句中,是从右向左计算输出表达式的值。8、数据输入在C语言中可以使用scanf( )、getchart( )、gets( )等函数进行数据输入。注:scanf()函数中没有精度控制。 gets(str);与scanf(“%s”,str);的差别是:使用gets()函数输入的字符串可以含有空格,而scanf(“%s”,str);不能输入含空格字符的字符串。【本节例题选编】1、选择题【例2.1】若x、i、j和k都是int型变量,则计算下面表达式后,x的值为 x=(i=4,j=16,k=32)A4 B

13、16 C32 D52【例2.2】若有代数式,则不正确的C语言表达式是 Aa/b/c*e*3 B3*a*e/b/c C3*a*e/b*c Da*e/c/b*3【例2.3】已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语法的表达式是 Ax%(-3) Bw+=-2 Ck=(a=2,b=3,a+b) Da+=a-=(b=4)*(a=3)【例2.4】以下选项中不属于C语言的类型的是 。Asigned short int Bunsigned long intCunsigned int Dlong short【例2.5】下列定义中

14、合法的是 。Ashor _a=1-.1e-1; Bdouble b=1+5e2.5;Clong do=0xfdaL; Dfloat 2_end=1-e-3;【例2.6】-8在内存中的存储形式是 。A11111111 11111000 B10000000 00001000C00000000 00001000 D11111111 11110111【例2.7】数值029是一个 。A八进制数 B十六进制数C十进制数 D非法数【例2.8】在C语言中,要求运算数必须是整型的运算符是 A/ B+ C! D%【例2.9】以下符合C语言语法的赋值表达式是 。Ad=9+e+f=d+9 Bd=9+e, f=d+9C

15、d=9+e, e+, d+9 Dd=9+e+=d+7【例2.10】C语言中,关于自增自减运算符使用正确的是 。A10+ B(x+y)- Cd+d+d+ D+(a-b)【例2.11】设有int x=11; 则表达式(x+*1/3)的值是 。A3 B4 C11 D12【例2.12】已知:int i=6, j; 则语句j=(+i)+(i+)后的j值是 。A4 B14 C13 D15【例2.13】设x、y、t均为int型变量,则执行语句:x=y=3; t=+x | +y后,y的值为 。A不定值 B4 C3 D1【例2.14】当c的值不为0时,以下能将c的值赋给变量a, b 的是 。Ac=b=a B(a

16、=c) | (b=c)C(a=c) & (b=c) Da=c=b【例2.15】已有定义:int x=3, y=4, z=5, 则表达式!(x+y)+z-1 & y+z/2的值是 。A6 B0 C2 D1【例2.16】下列运算符中,哪个运算符的优先级最高 。A=【例2.17】在C语言中,int、char和short三种类型数据所占用的内存是 。A均为2个字节 B由用户自己定义C由所用机器的机器字长决定的 D是任意的【例2.18】若有说明语句:char c=72;则变量c A包含1个字符 B包含2个字符 C包含3个字符 D说明不合法,c的值不确定【例2.19】若有定义:int a=7; float

17、 x=2.5, y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 A2.500000 B2.750000 C3.500000 D0.000000【例2.20】设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 Afloat Bchar Cint Ddouble【例2.21】以下程序的执行结果是 。#includemain() int i=2; printf(“%d,%dn”, +i, -i);A1, 1 B2, 1 C1, 2 D2, 2【例2.22】当接受用户输入的含空格的字符串时,应使用的函数是 。Ascanf

18、( ) Bgets( ) Cgetchar( ) Dgetc( )【例2.23】下列叙述中正确的是 AC语言中既有逻辑类型也有集合类型BC语言中没有逻辑类型但有集合类型CC语言中有逻辑类型但没有集合类型DC语言中既没有逻辑类型也没有集合类型【例2.24】以下错误的叙述是 。A在C程序中,逗号运算符的优先级最低B在C程序中,APH和aph是两个不同的变量C若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值【例2.25】长整型long数据在内存中的存储形式是 AASCII码 B原码 C反码

19、D补码【例2.26】字符型常量在内存中存放的是 AASCII码 BBCD码 C内部码 D十进制码【例2.27】字符串常量“22a,0n”的长度是 A8 B7 C6 D5【例2.28】设int x=1,y=1;表达式(!x|y-)的值是 A0 B1 C2 D1【例2.29】已知:int x;则使用逗号表达式(x=4*5, x*5), x+25的结果是 ,变量x的值为 。A20 B100 C45 D表达式不合法【例2.30】逻辑运算符两侧运算对象的数据类型 。A只能是0或1 B只能是0或非0正数C可以是整型或字符型数据 D可以是任何类型的数据【例2.31】以下程序的执行结果是 。#includem

20、ain() printf(“%fn”,2.5+1*7%2/4);A2.500000 B2.750000 C3.375000 D3.000000【例2.32】若给定条件表达式(M)?(a+):(a-),则其中表达式(M) A和(M0)等价 B和(M1)等价 C和(M!0)等价 D和(M!1)等价【例2.33】有以下程序:#includemain() unsigned char a,b,c; a=0x3; b=a | 0x8; c=bx?w:yz?y:z的结果是 。【例2.37】在语言中,一个int 型数据在内存中占2个字节,则int型数据的取值范围为 。【例2.38】要将一个16位二进制的整型变

21、量的高8位清零,只保其留低8位,可用的方法是 。【例2.39】若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为 ,n的值为 。x+=n+【例2.40】已知字母a 的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为 。【例2.41】假设m是一个三位数,从左到右用a,b,c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是 。【例2.42】设y为int型变量,描述“y是奇数”的表达式是 。【例2.43】在scanf( )函数中格式符x用于输入 。【例2.44】若有定义:int a=2, b=3; float x=3.5, y=2.5;

22、则下面表达式的值为 。(float)(a+b)/2+(int)x%(int)y【例2.45】若有定义:int b=7; float a=2.5,c=4.7;则下面表达式的值为 。a+(int)(b/3*(int)(a+c)/2)%4【例2.46】若有以下程序:执行后的输出结果是 。#includemain() int k=2,i=2,m; m=(k+=i*=k); printf(“%d,%dn”,m,i);【例2.47】有以下程序,输入123456789,其输出结果是 。#includemain() int a,b; float f; scanf(“%2d%*2d%2d%f”, &a, &b,

23、 &f); printf(“%d,%d,%fn”, a,b,f);【例2.48】以下程序的执行结果是 。#includemain() int a,b,c; a=b=1; c=a+-1; printf(“%d,%d,”, a, c); c+=-a+(+b | +c); printf(“%d,%dn”,a,c);【例2.49】以下程序的执行结果是 。#includemain() int i=10; printf(“%d,%d,%d”,i-,i-,i-);【例2.50】以下程序的执行结果是 。#includemain() int a=-32768, b; b=a-1; printf(“a=%d,b=

24、%d”, a, b);【例2.51】以下程序的执行结果是 。#includemain() int x=042, y=067, z; z=(x2) & (y3); printf(“%dn”,z);【例2.52】以下程序的执行结果是 。#includemain() int n=023; printf(“%dn”,-n);【例2.53】以下程序的执行结果是 。#includemain() int x=10,y=9; int a,b,c; a=(-x=y+)?-x:+y; b=x+; c=y; printf(“%d,%d,%dn”,a,b,c);第三章 选择语句和循环语句【要点归纳】1、if语句If语

25、句有一种使用形式单分支if语句。if(条件) 语句;双分支if语句。if(条件) 语句1;else 语句2;多分支if语句。if(条件1) 语句1;else if(条件2)语句2;else if (条件n)语句n;else 语句n+1;2、switch(开关)语句switch语句用于方便地从多个语句中选择一个或多个语句执行。switch(表达式)case 常量表达式1: 语句1;case 常量表达式2: 语句2;case 常量表达式n: 语句n;default: 语句n+1;注:表达式的值一定是整型值,若为其他类型,最后都要转换为整型数。3、while循环语句while(条件)语句;注:先判断

26、条件,后执行语句;4、dowhile循环语句do语句;while(条件);注:先执行一次循环体,再判断条件。While和do-while语句的差别是,后者至少执行“语句”一次,而前者有时一次也不执行语句。5、for循环语句for(表达式1;表达式2;表达式3)语句;注:省略各个表达式时,应能够知道其意义。“表达式1”可以省略,此时应在该语句之前给循环变量赋初值。其后的分号不能省略。“表达式2”可以省略,即无判定条件,循环无终止进行下去。需要在循环体中用break等语句退出循环。“表达式3”可以省略,这样需要在循环体“语句”中让循环变量变化,以保证循环能正常结束。“表达式1”和“表达式3”可以同

27、时省略,这样为和两种情况同时出现,需要使用相关语句保证循环结束。三个表达式都可省略,这样为和两种情况同时出现,需要使用相关语句保证循环结束。6、 break语句break语句的使用格式很简单,由关键字break和分号构成,其功能如下:l 在switch语句中,break用来使程序流程跳出switch语句,继续执行switch后的语句;l 在循环语句中,break用来从最近的循环体内跳出来。7、 continue语句continue语句只能用于循环语句中,作用为结束本次循环,即跳过循环体中尚末执行的语句,接着进行是否执行下一次循环的判定。【本节例题选编】1、选择题【例3.1】以下语句错误的是 A

28、if(xy); Bif(x=y)&(x!=0) x+=y; Cif(x!=y) scanf(“%d”,&x); esle scanf(“%d”,&y); Dif(xy) x+; y+;【例3.2】C语言的if语句中,用作判断的条件表达式为 A任意表达式 B逻辑表达式 C关系表达式 D算术表达式 【例3.3】为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与 配对。A缩排位置相同的if B同一行上的if C其之后最近的if D其之前最近的if 【例3.4】以下程序的输出结果是 #includemain() int i=1,j=1,k=2; if(j+ | k+)

29、& i+) printf(“%d,%d,%dn”,i,j,k);A1,1,2 B2,2,1 C2,2,2 D2,2,3 【例3.5】已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是 。if(xy)z=x; x=y; y=z;Ax=10,y=20,z=30 Bx=20,y=30,z=30Cx=20,y=30,z=10 Dx=20,y=30,z=20【例3.6】以下程序的运行结果是 。main() int m=5; if(m+5) printf(“%dn”,m); else printf(“%dn”,m-);A4 B5 C6 D7【例3.7】以下程序的输出结果是 。mai

30、n() int a=100,x=10,y=20,ok1=5,ok2=0; if(xy) if(y!=10) if(!ok1) a=1; else if(ok2) a=10; a=-1; printf(“%dn”,a);A1 B0 C-1 D值不确定 【例3.8】若a,b均是整型变量,正确的switch语句是 Aswitch(a) Bswitch(a) case 1.0: printf(“in”); case b: printf(“in”);case 2: printf(“youn”); case 1: printf(“youn”); Cswitch(a+b) Dswitch(a+b) case

31、 1: printf(“in”); case 1: printf(“in”);case 2*a: printf(“youn”); case 2: printf(“youn”); 【例3.9】对for(表达式1;表达式3),可理解为 Afor(表达式1;0;表达式3) Bfor(表达式1;表达式3;表达式3)Cfor(表达式1;1;表达式3) Dfor(表达式1;表达式1;表达式3)【例3.10】执行以下程序段后,变量a,b,c的值分别是 。int x=10,y=9;int a,b,c;a=(-x= =y+)? -x: +y;b=x+;c=y;Aa=9,b=9,c=9 Ba=8,b=8,c=10

32、 Ca=9,b=10,c=9 Da=1,b=11,c=10【例3.11】有以下程序段:int n=0, p;doscnaf(“%d”,&p); n+;while(p!=12345 & n=0);A1 B2 C3 D4【例3.13】以下程序段 。x=-1;do x=x*x; while(!x);A是死循环 B循环执行二次 C循环执行一次 D有语法错误【例3.14】以下程序的执行结果是 #includemain() int a=0, i; for(i=1; i5; i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default:

33、a+=5; printf(“%dn”,a);A31 B13 C10 D20【例3.15】下面程序的运行结果是 #includemain() int y=10; do y-; while(-y); printf(“%dn”, y-);A-1 B1 C8 D0【例3.16】下面程序的功能是输出以下金字塔图案的是: * * * *#includemain() int i, j; for(i=1; i=4; i+) for(j=1; j=4-i; j+) printf(“ ”); for(j=1; j= ; j+) printf(“*”); printf(“n”); 在下划线处应填入的是 Ai B2*i-1 C2*i+1 Di+2【例3.17】下面程序段 。for(t=1;t=100;t+) scanf(“%d”,&x); if(x0) continue; printf(“%3d”,t);A当x=0时什么也不做Cprintf函数永远也不执行 D最多允许输出100个非负整数【例3.18】若w,x,y,z,m均为int 型变量,则执行以下语句后的m值是 。w=1; x=2; y=3; z=4;m=(wx)? w: x;m=(my)?m: y;m=(xz)?m: z;A1 B2 C3 D4【例3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号