c语言期末复习资料.pdf
《c语言期末复习资料.pdf》由会员分享,可在线阅读,更多相关《c语言期末复习资料.pdf(162页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、所有单选题1、C语 言 中 下 列 叙 述 正 确 的 是。A:不能使用do-while语句构成的循环B:do-while语句构成的循环,必须用break语句才能退出C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环答 案:D评 析:本题的考查点是do-while语句。选项A是错误的,C语言支持do-while语 句;选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。故本题答案为D。知识点:知识点/循环结构程序设计/WH
2、ILE和D。WHILE循环结构2、以下选项中属于C语言的数据类型是 oA:复数型B:逻辑型C:双精度型D:集合型答 案:C评 析:本题的考查点是C语言的数据类型。C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。其 中,基本类型分为整型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。故本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法3、下列描述中不正确的是 oA:字符型数组中可以存放字符串B:可以对字符型数组进行整体输入、输出C:可以对整型数组进行整体输入、输出D:不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值答 案:C评 析
3、:本题的考查点是对数组的理解。C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所 以,选项C的说法是不正确的。故本题答案为C。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用4、以下程序的输出结果是main()int x=1O,y=1O,i;for(i=0;x8;y=+i)printf(%d%d,x-,y);)A:10 1 9 2B:9 8 7 6C:10 9 9 0D:10 10 9 1答 案:D评 析:本题的考查点是for循环语句。for语句的一般格式为:for(表达式1 ;表达式2;表达式3)语句执行中只要表达式2为
4、 真,则执行for语句中指定的内嵌语句。所 以,本题在条件为真的情况下,先执行printf函数。x-是先使用后运算。故本题答案为D。知识点:知识点/循环结构程序设计/FOR循环结构5、以下程序的输出结果是 omain()char a10=T,2,3,4,5,6,7,8,9,0,*p;int i;i=8;p=a+i;printf(%sn,p-3);)A:6B:6789C:6D:789答 案:B评 析:本题的考查点是通过指针引用数组元素。指针p指向数组中第8个元 素,即a8=9。输出时,输出字符串,且指针把矶8作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向a5为6,所以输出为6789
5、。故本题答案为B。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数6、能正确表示a和b同时为正或同时为负的逻辑表达式是 oA:(a=0|b=0)&(a0|b=0&b=0)&(a0&b0)&(a+b0答 案:D评 析:本题的考查点是对逻辑表达式的判断。逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项C中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。故本题答案为D。知识点:知识点/基本语句/表达式语句,空语句,复合语句7、以下程序的输出结果是 omai
6、n()int n=4;while(n-)printf(H%d,-n);)A:2 0B:3 1C:3 2 1D:2 1 0答 案:A评 析:本题的考查点是while语句的判断。n-是先使用后运算,一 n是先运算后使用。n=4时,执行n-后,n变为3,执行-n后,n变为2,所 以,第一次输出时,n为2;同上过程,第二次输出时,n为0。故本题答案为A。知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构8、以下程序的输出结果是 omain()int k=17;printf(H%d,%o,%xn,k,k,k);A:17,021,0 x11B:17,17,17C:17,0 x11,02
7、1D:17,21,11答 案:D评 析:本题的考查点是不同格式的数据输出。printf函数对不同类型的数据用不同的格式字符,“d”是以带符号的十进制形式输出整数(正数不输出符 号);。”以8进制无符号形式输出整数(不包括前导符0);“x”以16进制无符号形式输出整数(不包括前导符Ox)o本题答案为D。知识点:知识点/数据类型及其运算心的数据类型及其定义方法9、若有说明:long*p,a;则不能通过scanf语句正确给输入项读 入 数 据 的 程 序 段 是。A:*p=&a;scanf(%ld,p);B:p=(long*)malloc(8);scanf(,%ld,p);C:scanf(%ld,p
8、=&a);D:scanf(%ld,&a);答 案:A评 析:本题的考查点是格式输入函数Scanf()的使用。scanf函数输入形式为:scanf(格式控制,地址表列);选项B中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据;选项C中,p=&a,求出变量a的内存地址并赋给p;选项D中,能正确给输入项读入数据;故本题答案为A。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用10、以下选项中,能定义s为合法的结构体变量的是 oA:typedef struct abc double a;char b10;s;B:st
9、ruct double a;char b10;)s;C:struct ABC double a;char b10;)ABC s;D:typedef ABC double a;char b10;)ABC s;答 案:B评 析:本题的考查点是结构体变量的定义。定义一个结构体类型的变量,可采用三种方法:(1)先定义结构体类型再定义变量名;(2)在定义类型的同时定义变量;(3)直接定义结构类型变量,即不出现结构体名;选项B符合第三种定义方法。故本题答案为B。知识点:知识点/结构体(即 结构)与共用体(即 联合)/结构体和共用体类型数据的定义方法和引用方法11、请读程序:#include main()(
10、int a,b;for(a=1 ,b=1 ;a=20)break;if(b%3=1)b+=3;continue;b-=5;)printf(%dn,a);)上面程序的输出结果是 OA:7B:8C:9D:10答 案:B评 析:本题的考查点是break语句和continue语句。“”是求余运算符,执行第一次循环 时,条件(b%3二=1)为 真,b=4,继续下一次循环,如此反复,当b=22时,条件(b=20)为 假,跳出循环,此时共循环8次,即a=8。故本题答案为B。知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构12、请选出合法的C语言赋值语句 oA:a=b=58B:i+;C:
11、a=58,b=58D:k=int(a+b);答 案:B评 析:本题的考查点是赋值语句。选项A和C没有用分号表示语句结束,不合法;选项D,函数名和C语言的关键字重名,不合法。故本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句13、请选出可用作C语言用户标识符的一组标识符 o void a3_b3 For 2adefine _123 _abc DOWORD IF case sizeofA:B:C:D:答 案:B评 析:本题的考查点是C语言的标识符。C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。中的void和define都和C语言的关键字
12、重名,不合法;中的case和C语言的关键字重名,不合法;中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。故本题答案为B。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段printf(“%d”,(x,y);上面程序片段的输出结果是 OA:200B:100C:100 200D:输入格式符不够,输出不确定的值答 案:A评 析:本题的考查点是逗号表达式。在(x,y)中的“,”是一个特殊的运算符,叫做逗号运算符,它的一般形式为:表达式1,表达式2,求解过程为:先求解表达式1 ,再求解表达式2,整个表达式的
13、值是表达式2的 值,(x,y)的值为200,所以输出结果为200。故本题答案为A。知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用15、若x是int型变量,且有下面的程序片段for(x=3;x6;x+)printf(x%2)?(*%d,):(,#%dn,),x);上面程序片段的输出结果是 O*3#3#3 *3#4#4*4*4#5*5*5#5A:B:C:D:答 案:D评 析:本题的考查点是条件运算符。这种条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的执行顺序为:先求解表达式1 ,若非0则求解表达式2,此时表达式2的值就是整个条件表达式的值,若表达式1的值为0,则
14、求解表达式3,此时表达式3的值就是整个条件表达式的值。故本题答案为D。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性16、若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是 oA:pb=&x;B:pb=x;C:*pb=&x;D:*pb=*x答 案:A评 析:本题的考查点是赋值表达式。选项A是将变量x的地址赋给指针变量pb,使pb指向x,故为正确的赋值表达式。选项B是将x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项C是将x的地址赋给指针pb指向的那个地址等于x值的内存单元;选项D是不正确的语句;本题答案为A。知识点:知识点/基本语句/表
15、达式语句,空语句,复合语句17、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元int*p;p=m a llo c(s iz e o f(in t);则应填入 oA:intB:int*C:(*int)D:(int*)答 案:D评 析:本题的考查点是强制类型转换。不论p是指向什么类型的指针 变 量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式 为(数据类型*)O故本题答案为D。知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算18、若有以下说明和语句,请选出哪个是对c数组元素的正确引用 ointc45,(*cp)5;cp=c;A:cp+1B:*(cp+
16、3)C:*(cp+1)+3D:*(*cp+2)答 案:D评 析:本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首地址赋给了指针数组cp的第一个数组元素。选项A,cp+1是指将数组c的首地址加1 ,不是对数组元素的引用;选项B,*(cp+3)是地址等于数组c的首地址加3的那个内存单元的内容,不是对数组元素的引用;选项C,*(cp+1)+3是地址等于数组c的首地址加1的那个内存单元中存放的值加3,不是对数组元素的引用。故本题答案为D。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数19、若执行下面的程序时从键盘上输入3和4,main()inta.b.s;scan
17、f(%d%d,&a,&b);s=a;if(ab)s=b;s=s*s;printf(%dn,s);则输出是 OA:14B:16C:18D:20答 案:B评 析:本题的考查点是给变量赋值。用户输入的3和4分别赋给了a和b,在if语句进行判断时,因为表达式的值为真,所以b的值将赋给s,s*s=16,最后的打印结果为16。故本题答案为B。知识点:知识点/基本语句/表达式语句,空语句,复合语句20、设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的 表 达 式 是。A:B:a=bC:a|+c&b-cD:!(ab)&(n=cd)后n的值为 oA:1B:2C:3D:4答 案:
18、B评 析:本题的考查点是逻辑与运算。在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。本 题 中,(m=ab)的值为0,求出整个表达式的值为0,不需执行(n=cd),所以n仍为2。故本题答案为B。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性22、设ch是char型变量,其值为A,且有下面的表达式ch=(ch=,A,&ch=Z)?(ch+32):ch上面表达式的值是 OA:AB:aC:ZD:z答 案:B评 析:本题的考查点是条件运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3,条件运算符的
19、执行顺序:先求解表达式1 ,若非0则求解表达式2,此时表达式2的值就作为整个表达式的值,若表达式1的值为0,则求解表达式3,此时表达式3的值就作为整个表达式的值。本题中,表达式1的值为1 ,所以整个表达式的值为表达式(ch+32)的值,即为a。故本题答案为B。知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性23、设inta=12,则执行完语句a+=a=a*a后,a的值是。A:552B:264C:144D:-264答 案:D评 析:本题的考查点是赋值表达式的求解。第一步:a*a=144;(此时a=12)第二步:a=144相当于a=a144,a=a-144=-132;(此时a=
20、132)第三步:a+二 a相当于a=a+a,a=a+a=-264;所以该表达式最后的值应当为-264。故本题答案为D。知识点:知识点/数据类型及其运算/C表达式类型和求值规则24、设有如下枚举类型定义enum language Basic=3,Assembly=6,Ada=100,COBOL,Fortran);枚举量Fortran的值为。A:4B:7C:102D:103答 案:C评 析:本题考查的是数据类型。这个枚举中共有5个元素,前三个已有明确的赋值,而COBOL和Fortran没有明确的赋值,枚举的语法规定当枚举元素没有赋值时,其值为其前一个元素的值加一,所以COBOL的值为101,故Fo
21、rtran的值应为102o故答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法25、设有以下语句,其中不是对a数组元素的正确引用的是:(其中i10)int a10=0,1,2,3,4,5,6,7,8,9,*p=a;A:ap-aB:*(&ai)C:piD:*(*(a+i)答 案:D评 析:本题的考查点是通过指针引用数组元素。观察程序可知通实际上就是数组a的首地址,所以*(a+i)”表示的就是数组a中的第i个元素的值,进 而,我们可以知道*(*(a+i)必然不是对a数组元素的正确引用。故本题答案为D。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数26、设
22、有以下语句char a=3,b=6,c;c=aAb2;则c的二进制值是 OA:00011011B:00010100C:00011100D:00011000答 案:A评 析:本题的考查点是位运算。“v v”是C语言中规定的左移运算符,例 如,a=a2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次 方 是异或运算符,所以 的二进制值应为00011011。故本题答案为A。知识点:知识点/位运算/简单的位运算27、设有语句inta=3;则执行了语句a+=a=a*a;后,变量a的值是。A:3B:0C:9D:-12答 案:D评 析:本题的考查点是赋值表达式的
23、求解。第 一步:a*a=9;(此时a=3)第二步:a=9相当于a=a9,a=a-9=-6;(此时a=-6)第三步:a+=a相当于a=a+a,a=a+a=-12;所以该表达式最后的值应当为12。故本题答案为D。知识点:知识点/数据类型及其运算心表达式类型和求值规则28、下面程序main()int x=100,a=10,b=20,ok1=5,ok2=0;if(ab)if(b!=15)if(!ok1)x=1;else if(ok2)x=10;x=-1;printf(,%dn,x);)的输出是 oA:-1B:0C:1D:不确定的值答 案:A评 析:本题的考查点是判断语句的循环嵌套。第一个判断值为真,过
24、渡到下一个判断,第二个判断为真,过渡到第三个判断如此循环,在打印输出语句的前一行,程序给变量x赋了值,为,所 以,无论前期如何变化,最后的x值依然为 1。故本题答案为A。知识点:知识点/循环结构程序设计/循环的嵌套29、下面程序main()(int x=32;printf(%dn,x=x1);)的输出是 oA:100B:160C:120D:64答 案:D评 析:本题的考查点是位运算。v v 是C语言中规定的左移运算符,例 如,a=a2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘于2,左移两位相当于该数乘以2的2次方。所 以,x1=32*2=64o故本题答案为D。知识点:知识点/位
25、运算/简单的位运算30、下面程序main()(int a10=1,2,3,4,5,6,7,8,9,10),*p=a;printf(%dn,*(p+2);)的 输 出 是 oA:3B:4C:1D:2答 案:A评 析:本题的考查点是通过指针引用数组元素。*p=a语句是使指针p指向数组a的第一个数组元素,因此*(p+2)即是数组a的第3个元素的值,即a2。故本题答案为A。知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数31、下面程序main()(int x=10,y=3;printf(,%dn,y=x/y);)的输出是 oA:0B:1C:3D:不确定的值答 案:C评 析:本题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末 复习资料
限制150内