二级C语言笔试练习题题库_第1页
二级C语言笔试练习题题库_第2页
二级C语言笔试练习题题库_第3页
二级C语言笔试练习题题库_第4页
二级C语言笔试练习题题库_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

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

文档简介

1、全国计算机等级考试二级C语言程序设计第 1 章 C语言程序设计概述1第 2 章 C语言的基本数据类型与表达式3第 3 章 顺序程序设计11第 4 章 选择结构程序设计13第 5 章 循环结构18第 6 章 函数与编译预处理24第 7 章 数组34第 8 章 指针42第 9 章 结构体数据类型与链表57第 10 章 位运算与文件操作64上机考试题7199 / 102文档可自由编辑打印 第 1 章 C语言程序设计概述1.1 程序与程序设计1.2 算法及其描述1.3 C语言的发展及特点1.4 C语言程序的基本结构1.5 C语言字符集、标识符和关键字1.6 C语言程序的开发环境第 2 章 C语言的基本

2、数据类型与表达式2.1 C语言的基本数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 数据类型转换第 3 章 顺序程序设计3.1 C语言的基本语句3.2 数据输入与输出3.3 程序举例第 4 章 选择结构程序设计4.1 关系运算符与关系表达式4.2 逻辑运算符与逻辑表达式4.3 if语句4.4 switch语句第 5 章 循环结构5.1 while语句5.2 do-while语句5.3 for 语句5.4 break、continue和goto语句5.5 循环的嵌套5.6 复合结构程序举例第 6 章 函数与编译预处理6.1 模块化程序设计与函数6.2 函数的定义与调用6.3 函数的

3、递归调用6.4 变量的作用域与存储方式6.5 编译预处理目 录第 7 章 数组7.1 一维数组7.2 二维数组7.3 数组的应用7.4 字符数组与字符串7.5 数组作为函数的参数7.6 程序举例第 8 章 指针8.1 指针与指针变量8.2 指针与函数8.3 指针与数组8.4 指针与字符串8.5 指针数组与命令行参数8.6 程序举例第 9 章 结构体数据类型与链表9.1 结构体类型的定义9.2 结构体类型变量9.3 结构体类型数组9.4 结构体类型指针9.5 结构体与函数9.6 链表第 10 章 位运算与文件操作10.1 位运算与位运算符10.2 位运算举例10.3 C文件概述10.4 文件类型

4、指针10.5 文件的打开与关闭10.6 文件的定位第 11 章 上机考试题分析第 1 章 C语言程序设计概述一、选择题1、以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C语言出现的最晚,具有其他语言的一切优点2、以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分3、C语言规定,在一个源程序中,main函数的位置A)必须在最开始B

5、)必须在系统调用的库函数的后面C)可以任意D)必须在最后4、以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面5、C语言程序的基本单位是A)程序行B)语句C)函数D)字符6、以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符B)main() int x,y,z;x=0,y=x+1;z=x+y;7、以下

6、选项错误的是A)main() int x,y,z;x=0;y=x-1;z=x+y;D)main() int x,y,z;x=0;y=x+1;z=x+y,C)main() int x;intint y;x=0,y=x+1;z=x+y;8、以下4个选项中,不能看做一条语句的是A);B)a=5,b=2.5,c=3.6;C)if(a<5);D)if(b!=5)x=2;y=6;9、字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为A)和 01110111B)和C)和D)和二、填空题1、用高级语言编写的程序称为【 】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通

7、过编译程序一次翻译产生目标程序,然后执行。2、C语言程序的注释可以出现在程序中的任何地方,一个注释以【 】作为开始和结束。三、部分填空题解析2、解析: C语言程序的注释可以出现在程序基本单词之间的任何地方,C语言程序的注释以/*作为开始标记,并以*/作为结束标记。第 2 章 C语言的基本数据类型与表达式一、选择题1、C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型2、下列各数据类型不属于构造类型的是A)枚举型B)共用型C)结构型D)数组型3、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符A)必须为字母

8、B)必须为下划线C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符4、下列可用于C语言用户标识符的一组是A)void, define, WORDB)a3_b3, _123,CarC)For, -abc, IF CaseD)2a, DO, sizeof5、请选出可用作C语言用户标识符的是A)void,define,WORDB)a3_b3,_123,IFC)FOR,-abc,CaseD)2a,Do,Sizeof6、以下选项中合法的用户标识符是A)longB)_2TestC)3Dmax D)A.dat7、下列是用户自定义标识符的是A)_w1B)3_xyC)int D)LINE-38、下面四

9、个选项中,均是不合法的用户标识符的选项是A)A P_0 doB)float la0 _AC)b-a goto int D)_123 temp int9、下面四个选项中,均是合法整型常量的选项是A)160 -0xffff 011B)-0xcdf 01a 0xeC)-01 986,012 0668D)-0x48a 2e5 0x10、下面四个选项中,均是不正确的8进制数或16进制数的选项是A)016 0x8f 018B)0abc 017 0xaC)010 -0x11 0x16D)0a12 7ff -12311、下列数据中,不合法的C语言实型数据的是A)0.123B)123e3C)2.1e3.5D)7

10、89.012、在C语言中,退格符是A)nB)tC)fD)b13、下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是A)bB)tC)vD)f14、若有说明语句:char c='72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定15、在C语言中,char型数据在内存中的存储形式是A)补码B)反码C)原码D)ASCII码16、若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+1B)a=b=c+2C)int 18.5%3D)a=a+7=c+b 17、若变量a,i已正确定义,且i已正确赋值,合法的语句是A)

11、a= =1B)+i;C)a=a+=5;D)a=int(i);18、在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A)a=20000+20000;B)a=4000*10;C)a=30000+10000;D)a=4000L*10L19、若运行时给变量x输入12,则以下程序的运行结果是main()int x,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%dn",y); A)0B)22C)12D)1020、在C语言中,运算对象必须是整型数的运算符是A)%B)C)%和D)*21、C

12、语言中运算对象必须是整型的运算符是A)%=B)/C)=D)<=22、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合C语言语法的表达式是A)x%(-3)B)w+=-2 C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)23、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是A)2.500000B)2.750000C)3.500000D)0.00000024、请选出以下语句的输出结果printf("%dn",s

13、trlen("t"065xffn");A)5B)14C)8D)输出项不合法,无正常输出25、设有数组定义: char array="China" 则数组 array所占的空间为A)4个字节B)5个字节C)6个字节D)7个字节26、以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值27、sizeof(float)是A)一个双精度型表达

14、式B)一个整型表达式C)一种函数调用D)一个不合法的表达式28、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A)4B)16C)32D)5229、下列程序的输出结果是main() double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%dn", d*y);A)3B)3.2C)0D)3.0730、设变量a是int型,f是float型,i是double型,则表达式10+a+i*f值的数据类型为A)intB)floatC)doubleD)不确定31、设以下变量均为int类型,表达式的值不

15、为7的是A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)32、若有条件表达式 (exp)?a+:b-,则以下表达式中能完全等价于表达式(exp)的是A)(exp=0)B)(exp!=0)C)(exp=1)D)(exp!=1)33、以下选项中,与k=n+完全等价的表达式是A)k=n,n=n+1B)n=n+1,k=nC)k=+nD)k+=n+134、以下程序的输出结果是main() int a=21,b=11;printf("%dn",-a+b,-b+a);A)30B)31C)32D

16、)3335、设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是printf("%d,%dn",x-,-y);A)10,3B)9,3C)9,2D)10,236、表达式a<b|(c&d)中运算符优先级最高的是A)|B)&C)<D)()37、在C语言中,int,char和short三种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定38、若有以下定义,则能使值为3的表达式是int k=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(

17、k%=5)39、下面程序的输出结果为main() int a,b;b=(a=3*5,a*4,a*5);printf("%d",b);A)60B)75C)65D)无确定值40、假定x和y为double型,则表达式x=2,y=x+3/2的值是A)3.500000B)3C)2.000000D)3.00000041、以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是A)x/y*zB)x*(1/(y*z)C)x/y*1/zD)x/y/z42、以下程序的输出结果是main() char c=z;printf("

18、;%c",c-25);A)aB)ZC)z-25D)y43、有以下程序#include <string.h>main() char *p="abcde0fghjik0 "printf("%dn ",strlen(p);程序运行后的输出结果是A)12B)15C)6D)544、设有int x=11;则表达式(x+*1/3)的值是A)3B)4C)11D)1245、若变量a是int类型,并执行了语句:a=A+1.6;,则正确的叙述是A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符A的ASCII值加上146、下列

19、程序运行的结果是main()float x;int i;x=3.6;i=(int)x;printf("x=%f,i=%d ",x,i);A)x=3.600000,i=3B)x=3.6,i=3C)x=3,i=3D)x=3.600000,i=3.000000二、填空题1、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【 】。2、以下程序的输出结果是 【 】 。main ()int i=010,j=10; pirntf ("%d,%dn",i,j);3、已知字母a的ASCII码为十进

20、制数97,且设ch为字符型变量,则表达式ch=a+8-3的值为 【 】 。4、下列程序的输出结果为 【 】 。main ()int x=3,y=5;printf ("d",x=(x-)*(-y);5、设y是int型,请写出y为奇数的关系表达式 【 】 。6、设int a=5,b=6,表达式(a=b-)?+a:-b的值是【 】 。7、以下程序的输出结果是【 】。main()int a=0;a+=(a=8);printf("%dn",a);8、在计算机中,字符的比较是对它们的【 】进行比较。9、在内存中,存储字符x要占用1个字节,存储字符串X要占用【 】个字

21、节。10、下列程序的输出结果是16.00,请填空。main()int a=9, b=2;float x=【 】, y=1.1,z;z=a/2+b*x/y+1/2;printf("%5.2fn", z ); 11、以下程序段的输出结果是【 】。main ()int a=2,b3,c=4;a*=16+(b+)-(+c);printf("%d",a);12、以下程序段的输出结果是【 】 。int x=17,y=26;printf ("d",y/=(x%=6);13、将以下程序写成三目运算表达式是【 】 。if(a>b)max=a;el

22、se max=b;14、下列y的值是 【 】。int y; y=sizeof (2.25*4);15、下列x的值是 【 】 。int x;x=sizeof 2.25*4;16、设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【 】。17、把数学表达式 改写成C语言的表达式是【 】。18、若有以下定义:char a;int b;float c; double d;则表达式a*b+d-c值的类型为【 】 。19、若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是【 】 。三、部分填空题解析2、解析: 以0开头的是八

23、进制数。3、解析: 在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。我们可以这样计算本题,97+8-3=102,即102所对应的字母为f。4、解析: x-的值为3,-y的值为4;注意前缀-和后缀-的区别。8、解析: C语言中,字符也可以进行比较运算,且是按照ASCII码值进行的。9、计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。所以存储字符串“X”要占用2个字节,存储字符x只要1个字节。10、解析: 本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其

24、中所含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:16.00=9/2+2*x/1.1+1/216.00=4+2*x/1.1+012.00=2*x/1.1所以,x的值为6.6。11、解析: a*16(b+)-(+c)等价于a=a*(16(b+)-(+c),b+的值为3,+c的值为5,请注意前缀和后缀的用法。12、解析: 是取余运算,操作数为整型,所以最后的结果也为整型,运算过程如下:y/=(x%-6);y/=(x=x%6);y/=5;y=y/5;y=5;13、解析: 本题考查三目运算符的用法,条件运算符要求有三个操作对象,称三目(元)运算符,它是C语言

25、中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3 所以,我们可以写成(a>b)?a:b,它是一个“条件表达式”。执行顺序是:如果(a>b)条件为真,则条件表达式取值a,否则取值b。14、解析: sizeof (2.25*4)为sizeof (10.00)值为8,C语言规定浮点型常量当双精度处理(以IBM-PC机为例)。15、解析: sizeof运算符高于算术运算符,所以sizeof 2.25*4等价于(sizeof 2.25)*4为8×432(以IBMPC机为例)。16、解析: 本题考查两个知识点一是x/y的值为整型即为0,二是数字1存放在do

26、uble中是double类型。18、解析: C语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则,短整型转为长整型;整型转换为实型。19、解析: 在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再和c1转化后的双精度数相乘得0.500000。但其要赋值给整型变量c3,故要进行强制转换,c3的值为0。第 3 章 顺序程序设计一、选择题1、结构化程序所规定的三种最基本控制结构是A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数2、若说明int

27、 *p,n;则通过语句scanf能够正确读入数据的程序段是A)p=&n;scanf("%d",&p);B)p=&n;scanf("%d",*p);C)scanf("%d",n);D)p=&n;scanf("%d",p);3、以下程序段的输出结果是int a=1234;printf("%2dn",a);A)12B)34C)1234D)提示出错、无结果4、已有定义int a=-2;和输出语句 printf("%8lx",a);以下正确的叙述是A)整

28、型变量的输出形式只有%d一种B)%x是格式符的一种,它可以适用于任何一种类型的数据C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度5、对下面程序描述正确的一项是 (每行程序前面的数字表示行号)1 main()2 3 float a3=0.0;4 int i;5 for(i=0;i<3;i+)scanf("%d",&ai);6 for(i=1;i<3;i+)a0=a0+ai;7 printf("%fn",a0);8 A)没有错误B)第3行有错误C)第5行有错

29、误D)第7行有错误6、若变量已正确说明为int类型,要通过语句scanf("%d %d %d ",&a,&b,&c);给a赋值3,b赋值5,c赋值8,正确的输入形式是A)3<回车>5<回车>8<回车>B)3,5,8<回车>C)3<回车>58<回车>D)35<回车>8<回车>7、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是main() int *p,*q,a,b;p=&a;printf("input a:&quo

30、t;);scanf("%d",*p);A)*p表示的是指针变量p的地址B)*p表示的是变量a的值,而不是变量a的地址C)*p表示的是指针变量p的值D)*p只能用来说明p是一个指针变量8、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是A)INPUT x、y、z;B)scanf("%d%d%d",&x,&y,&z);C)scanf("%d%d%d",x,y,z);D)read("%d%d%d",&x,&y,&z);9、执行下列程序时输入:1

31、23<空格>456<空格>789<回车> 输出结果是main() char s100; int c, i;scanf("%c",&c); scanf("%d",&i); scanf("%s",s);printf("%c,%d,%sn",c,i,s);A)123,456,789B)1,456,789C)1,23,456,789D)1,23,456二、填空题1、以下程序的输出结果是【 】。int a=1234;printf ("%2dn",a);第

32、 4 章 选择结构程序设计一、选择题1、在C程序中,判逻辑值时,用“非0”表示逻辑值“真”, 又用“0”表示逻辑值“假”。 在求逻辑值时,用()表示逻辑表达式值为“真”, 又用()表示逻辑表达式值为“假”。A)1 0B)0 1C)非0 非0D)1 12、有如下程序段int a=14,b=15,x;char c=A;x=(a&&b)&&(c<B);3、执行该程序段后,x的值为A)tureB)falseC)0D)14、若运行以下程序时,从键盘输入 ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include

33、 <stdio.h>main()char c;int v0=1,v1=0,v2=0;doswitch(c=getchar()case a:case A:case e:case E:case i:case I:case o:case O:case u:case U:v1+=1;default:v0+=1;v2+=1; while(c!=n); printf("v0=%d,v1=%d,v2=%dn",v0,v1,v2);A)v0=7,v1=4,v2=7B)v0=8,v1=4,v2=8C)v0=11,v1=4,v2=11D)v0=13,v1=4,v2=125、有如下程

34、序 main() float x=2.0,y;if(x<0.0)y=0.0;else if(x>10.0)y=1.0/x;else y=1.0;printf("%fn",y);该程序的输出结果是A)0.000000B)0.250000C)0.500000D)1.0000006、能正确表示逻辑关系:“a10或a0”的C语言表达式是A)a>=10 or a<=0B)a>=0|a<=10C)a>=10 &&a<=0D)a>=10a<=07、有如下程序main() int a=2,b=-1,c=2;if(a

35、<b)if(b<0)c=0;else c+;printf("%dn",c);该程序的输出结果是A)0B)1C)2D)38、若变量c为char类型,能正确判断出c为小写字母的表达式是A)a<=c<=zB)(c>=a)|(c<=z)C)(a<=c)and(z>=c)D)(c>=a)&&(c<=z)9、判断char型变量cl是否为大写字母的正确表达式是A)A<=cl<=ZB)(cl>=A)&&(cl<=Z)C)(A>=cl)|(Z<=cl)D)(cl&g

36、t;=A)&&(cl<=Z)10、下列函数的运行结果是int f(int a,int b) int c;if(a>b)c=1;else if(a=b)c=0;else c=-1;return(c);main() int i=2,p;int j,k;j=i;k=+i;p=f(j,k);printf("%d",p);11、设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是A)x&&yB)x<=yC)x|+y&&y-zD)!(x<y&&!z|1)12、以下

37、程序的输出结果是main()int a,i;a=0;for(i=1;i5;i+)switch(i)case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf("%dn",a);A)31B)13C)10D)2013、以下程序的输出结果是main() int a=4,b=5,c=0,d;d=!a&&!b|!c;printf("%dn",d); A)1B)0C)非0的数D)-114、设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行 (m=a>b)&&

38、(n=c>d)后n的值是A)1B)2C)3D)415、设x,y,t均为int型变量,执行语句:x=y=3;t=+x|+y;完成后,y的值为A)不确定B)4C)3D)116、若执行下面的程序时,从键盘上输入5和2,则输出结果是main() int a,b,k;scanf("%d,%d ",&a,&b);k=a;if(a<b)k=a%b;else k=b%a;printf("%dn ",k);A)5B)3C)2D)017、请阅读以下程序:main() int a=5,b=0,c=0;if(a=b+c)printf("*n

39、");else printf("n");以上程序A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出*D)输出二、填空题1、若已知a=10,b=20,则表达式!a<b的值为【 】 。2、若从键盘输入58,则以下程序输出的结果是 【 】 。main()int a;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);3、以下程序输出的

40、结果是【 】。main() int a=5,b=4,c=3,d;d=(a>b>c);printf("%dn",d);4、关系表达式x<y<z,用C语言的表达式为【 】 。5、以下程序的输出结果是【 】。main() int x=100, a=10, b=20, ok1=5, ok2=0;if(a<b)if(b!=15)if(!ok1)x=1;else if(ok2)x=10;else x=-1;printf("%dn", x);6、以下程序的输出结果是【 】。#define PR(ar)printf("%d,&qu

41、ot;,ar)main() int j, a=1, 3, 5, 7, 9, 11, 15, *p=a+5;for(j=3; j; j-)switch(j) case 1:case 2: PR(*p+); break;case 3:PR(*(-p);printf("n");三、部分填空题解析1、解析: 计算表达式!a<b,先计算!a,因a的值为10,!a的值为0。关系表达式0<20为真,所以表达式!a<b的值为1。2、解析: 本题考查对if语句的掌握,当输入58以后,程序中的3个if语句都成立,所以分别输出58。3、解析: 本题的关键在于对变量c的赋值运算:

42、d=(a>b>c)d=(5>4>3)先算5>3,为真,得1,即:d=(1>3),此时1>3,为假,得0。4、解析: x<y<z的意思是y大于x并且y小于z,在C语言中,表达“并且”用逻辑与运算符“&&”。5、程序预置变量x的值为100,a的值为10,b的值为20,ok1为5,ok2为0。程序中给出的if语句可以写成更结构化的形式如下:if (a<b)if(b!=15)if (!ok1)x=1;elseif(ok2)x=10; else x=-1;由于条件a<b成立,并且条件b!=15也成立,而ok1不等于0,执行

43、else 后的语句。又因ok2等于0,执行else后的语句赋-1给x。所以程序输出-1。6、解析: 程序的宏定义PR以d格式输出参数的值和逗号字符。程序给数组a赋初值,并由指针p指向元素a5。程序让j从3至1,共循环3次。当j是3时,让p减1,并输出p所指元素的值9;当j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和11。所以程序输出:9,9,11,第 5 章 循环结构一、选择题1、下面有关for循环的正确描述是A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for循环的循环体语句中

44、,可以包含多条语句,但必须用花括号括起来2、对表达式for(表达式1; ;表达式3)可理解为A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)3、以下描述中正确的是A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,是先执行一次循环,再进行判断D)do-while循环中,根据情况可以省略while4、C语言中 while 和do-w

45、hile循环的主要区别是A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while 的循环体不能是复合语句5、对下,两个语句描述正确的是.while(1).for(;)A)都是无限循环B)是无限循环,错误C)循环一次,错误D)以上答案都错6、下列程序的输出结果是#include <stdio.h>main() int y=10;doy-;while(-y);printf("%dn",y-); A)-1B)1C)8D)07、有如下程序 main()

46、int x=23;do printf("%d",x-);while(!x);该程序的执行结果是A)321B)23C)不输出任何内容D)陷入死循环8、执行语句 for(i=1;i+<4;); 后变量 i 的值是A)3B)4C)5D)不定9、在下述程序中,判断i>j共执行的次数是main()int i=0, j=10, k=2, s=0;for (;)i+=k;if(i>j)printf("%d",s);break;s+=i;A)4B)7C)5D)610、设有程序段int k=10;while(k=0)k=k-1;则下面描述中正确的是A)w

47、hile循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次11、若有如下语句int x=3;do printf("%dn",x-=2);while(!(-x);则上面程序段A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环12、下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。#include <stdio.h>main() int i=0,j,k;doi+;k=316-13*i;while(_);j=k/11;printf("316=13*%d+11*%d"

48、,i,j);A)k/11B)k%11C)k/11=0D)k%11=013、下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空。#include <stdio.h>main()int a,b,t;scanf("%d%d",&a,&b);while(_)if(a>b)t=a;a=b;b=t;printf("%d,%dn",a,b); scanf("%d%d",&a,&b); A)!a=bB)a!=bC)a=bD)a=b13、以下程序的输出结果是m

49、ain() int i,j,x=0;for(i=0;i<2;i+) x+;for(j=0;j<3;j+) if(j%2)continue;x+;x+;printf("x=%dn",x);A)x=4B)x=8C)x=6D)x=1214、设有以下程序段int x=0,s=0;while(!x!=0)s+=+x;printf("%d",s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次15、下列说法正确的是int i,x;for(i=0,x=0;i<=9 &&x!=876;

50、i+)scanf("%d",x);A)最多的执行10次B)最多执行9次C)是无限循环D)循环体一次也不执行16、已知int t=0;while (t=1).则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对17、有如下程序:main()int n=9;while(n>6)n-; printf("%d",n);18、该程序的输出结果是A)987B)876C)8765D)9876C)int k=10000;dok+;while(k>10000);D)int s=36;while(s)-

51、s;19、在下列选项中,没有构成死循环的是A)int i=100;while(1)i=i%100+1;if(i>100)break; B)for(;);二、填空题1、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【 】 。for(i=0, j=10; i<=j; i+, j-)k=i+j;2、函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include <conio.h>#includ

52、e <stdio.h>float fun (int m, int n) int i;double p=1.0;for(i=1;i<=m;i+)【 】;for(i=1;i<=n;i+)【 】;for(i=1;i<=m-n;i+)p=p/i;return p;main () clrscr();printf ("p=%fn",fun (12,8);3、以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。main ()float x,amax,amin;scanf ("%f",&x);amax=x;amin=x;while (【 】)if (x>amax)amax=x;elseif【 】amin=x; else scanf ("%f",&x);printf ("n amax=%fn amin=%fn",amax,amin);4、下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0

温馨提示

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

最新文档

评论

0/150

提交评论