ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:69.50KB ,
资源ID:1332039      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1332039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷26及答案解析.doc)为本站会员(livefirmly316)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级C语言机试(C语言程序设计)模拟试卷26及答案解析.doc

1、国家二级 C语言机试(C 语言程序设计)模拟试卷 26及答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是(分数:2.00)A.while(ch=getchar()=N)printf(“c“,ch);B.while(ch=getchar()=“N“)printf(“c“,ch);C.while(ch=getchar()!=N)printf(“c“,ch);D.while(ch=getchar()=N)printf(“c“,ch);2.若有以下程序

2、main()int a=2,b=0; while(a+) +b: printf(“d,dn“,a,b);则程序的输出结果是(分数:2.00)A.0,2B.1,2C.1,3D.2,33.由以下 while构成的循环,循环体执行的次数是 int k=0;while(k=1)k+;(分数:2.00)A.一次也不执行B.执行一次C.无限次D.有语法错,不能执行4.有以下程序 main()int a=2,b=0;while(a+&+b);printf(“d,dn“,a,b);程序运行后输出结果是(分数:2.00)A.0,3B.1,2C.1,3D.0,25.关于 do循环体 while(条件表达式);以下

3、叙述中正确的是(分数:2.00)A.循环体的执行次数总是比条件表达式的执行次数多一次B.条件表达式的执行次数总是比循环体的执行次数多一次C.条件表达式的执行次数与循环体的执行次数无关D.条件表达式的执行次数与循环体的执行次数一样6.以下不构成无限循环的语句或语句组是(分数:2.00)A.n=0;do+n;while(n=0);B.n=0;while(1)n+;C.n=10;while(n);n-;D.for(n=0,i=1;i+)n+=i;7.有以下程序 main() int i=5; do if(i3=1) if(i5=2)printf(“*d“,i); break; i+; while(i

4、!=0); printf(“n“);程序的运行结果是(分数:2.00)A.*3*5B.*5C.*7D.*2*68.若变量已正确定义,有以下程序段 i=0;doprintf(“d,“,i);while(i+);printf(“dn“,i);其输出结果是(分数:2.00)A.0,0B.1,1C.0,1D.程序进入无限循环9.若有以下程序 main()int a=2,b=0; do+b;while(a+); printf(“d,dn“,a,b);则程序的输出结果是(分数:2.00)A.0,2B.1,2C.1,3D.2,310.有以下程序 main()int a=3; doprintf(“d,“,a=

5、2);while(!(-a); printf(“n“);程序运行后的输出结果是(分数:2.00)A.1,B.1,2,C.3,0,D.1,011.若 i和 k都是 int类型变量,有以下 for语句 for(i=0,k=1; k=1; k+)printf(“*n“);下面关于语句执行情况的叙述中正确的是(分数:2.00)A.循环体执行两次B.循环体执行一次C.循环体一次也不能执行D.构成无限循环12.若 k是 int类型变量,且有以下 for语句 1for(k=1;k0;k+)printf(“*n“);下面关于语句执行情况的叙述中正确的是(分数:2.00)A.循环体执行两次B.循环体执行一次C.

6、循环体一次也不执行D.构成无限循环13.有以下程序段 int i,n;for(i=0;i8;i+)n=rand()5; switch(n) case 1: case 3:printf(“dn“,n);break; case 2: case 4:printf(“dn“,n);continue; case 0:exit(0);printf(“dn“,n);以下关于程序段执行情况的叙述,正确的是(分数:2.00)A.当产生的随机数 n为 4时结束循环操作B.当产生的随机数 n为 1和 2时不做任何操作C.当产生的随机数 n为 0时结束程序运行D.for循环语句固定执行 8次14.有以下程序#incl

7、udestdiohmain()int y=9; for(;y0;y-) if(y3=0)printf(“d“,-y);程序的运行结果是(分数:2.00)A.963B.852C.741D.87542115.有以下程序#includestdiohmain() int i,j,m=1; for(i=1;i3;i+) for(j=3;j0;j-) if(i*j3)break; m*=i*j; printf(“m=dn“,m);程序运行后的输出结果是(分数:2.00)A.m=2B.m=4C.m=5D.m=616.有以下程序#includestdioh void main() int c=0,k; for

8、(k=1;k3;k+) switch(k) default:c+=k; case 2:c+;break; case 4:c+=2;break; printf(“dn“,c);(分数:2.00)A.9B.7C.5D.317.有以下程序#includestdiohmain() int i,j; for(i=3;i=1;i-) for(j=1;j=2;j+)printf(“d“,i+j); printf(“n“);程序的运行结果是(分数:2.00)A.4 3 2 5 4 3B.2 3 3 4 4 5C.4 5 3 4 2 3D.2 3 3 4 2 318.设变量己正确定义,则以下能正确计算 f=n!

9、的程序段是(分数:2.00)A.f=0; for(i=1;i=n;i+)f*=i;B.f=1; for(i=1;in;i+) f*=i;C.f=1; for(i=n;i1;i+)f*=i;D.f=1; for(i=n;i=2;i-) f*=i;19.有以下程序 main()int i; for(i=1;i=40;i+) if(i+5=0) if(+i8=0)printf(“d“,i); printf(“n“);执行后的输出结果是(分数:2.00)A.24B.5C.32D.4020.有以下程序#includestdiohvoid main()char b,c;int i; b=a;c=A; fo

10、r(i=0;i6;i+) if(i2)putchar(i+b); else putchar(i+c); printf(“n“);程序运行后的输出结果是(分数:2.00)A.ABCDEFB.aBcDeFC.abcdefD.AbCdEf21.有以下程序 main()int a=1,b=2;for(;a8;a+) b+=a; a+=2;printf(“d,dn“,a,b);程序运行后的输出结果是(分数:2.00)A.8,11B.10,14C.7,11D.9,1822.有以下程序段 int i,n;for(i=0;i8;i+) n=rand()5; switch(n) case 1: case 3:p

11、rintf(“dn“,n);break; case 2: case 4:printf(“dn“,n);continue; case 0:exit(0); printf(“dn“,n);(分数:2.00)A.当产生的随机数 n为 4时结束循环操作B.当产生的随机数 n为 1和 2时不做任何操作C.当产生的随机数 n为 0时结束程序运行D.for循环语句固定执行 8次23.若有以下程序 main()int a=6,b=0,c=0; for(;a;) b+=a; a=+c; printf(“d,d,dn“,a,b,c);则程序的输出结果是(分数:2.00)A.1,14,3B.0,18,3C.0,14

12、,3D.0,14,624.若有以下程序 main()int a=6,b=0,c=0; for(;a&(b=0);) b+=a; a=c+; printf(“d,d,dn“,a,b,c);则程序的输出结果是(分数:2.00)A.6,0,0B.5,6,0C.6,6,1D.5,6,125.以下叙述中正确的是(分数:2.00)A.对于“for(表达式 1;表达式 2;表达式 3)循环体”首先要计算表达式 2的值,以便决定是否开始循环B.对于“for(表达式 1;表达式 2;表达式 3)循环体”,只在个别情况下才能转换成 while语句C.只要适当地修改代码,就可以将 do-while与 while相互

13、转换D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用 while语句26.若有以下程序#include char*a=“you“: char b=“Welcome you to China!“; main()int i,j=0;char*p; for(i=0;bi!=0;i+) if(*a=bi) p=a; for(j=i;*p!=0;j+) if(*p!=bj)break; p+; if(*p=0)break; printf(“s“,&bi);则程序的输出结果是(分数:2.00)A.you to China!B.to China!C.me you to China!D.

14、China!27.以下程序段中的变量已正确定义 for(i=0;i4:i+,i+) for(k=1;k3;k+); printf(“*“);程序段的输出结果是(分数:2.00)A.*B.*C.*D.*28.有以下程序 main() int i,j; for(i=1;i4;i+) for(j=i;j4;j+) printf(“d*d=d”,i,j,i*j); printf(“n“); (分数:2.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9C.1*1=1 1*2=2 1*3=3 2*2=

15、4 2*3=6 3*3=9D.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=929.有以下程序 #includestdioh main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+)m=mj; printf(“dn“,m); 程序的运行结果是(分数:2.00)A.0B.1C.2D.330.以下叙述中正确的是(分数:2.00)A.循环发生嵌套时,最多只能两层B.三种循环 for,while,do-while 可以互相嵌套C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D.for语句的圆括号中的表达式不能都省略掉31.

16、有以下程序 main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j2)continue; x+; x+; printf(“x=dn“,x);程序执行后的输出结果是(分数:2.00)A.x=4B.x=6C.x=12D.x=832.有以下程序 #includestdioh main()int x=8; for(;x0;x-) if(x3)printf(“d,“,x-);continue; prinff(“d,“,-x); 程序的运行结果是(分数:2.00)A.8,7,5,2,B.9,7,6,4,C.7,4,2,D.8,5,4,2,33

17、.以下叙述中正确的是(分数:2.00)A.continue语句的作用是:使程序的执行流程跳出包含它的所有循环B.break语句只能用在循环体内和 switch语句体内C.在循环体内使用 break语句和 continue语句的作用相同D.break语句只能用于 switch语句体中34.以下叙述中正确的是(分数:2.00)A.break语句不能用于提前结束 for语句的本层循环B.continue语句使得整个循环终止C.使用 break语句可以使流程跳出 switch语句体D.在 for语句中,continue 与 break的效果是一样的,可以互换35.以下叙述中正确的是(分数:2.00)A

18、.当 break出现在循环体中的 switch语句体内时,其作用是跳出该 switch语句体,并中止循环体的执行B.只能在循环体内和 switch语句体内使用 break语句C.continue语句的作用是:在执行完本次循环体中剩余语句后,中止循环D.在 while语句和 do-while语句中无法使用 continue语句国家二级 C语言机试(C 语言程序设计)模拟试卷 26答案解析(总分:70.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是(分数:2.00)A.

19、while(ch=getchar()=N)printf(“c“,ch);B.while(ch=getchar()=“N“)printf(“c“,ch);C.while(ch=getchar()!=N)printf(“c“,ch); D.while(ch=getchar()=N)printf(“c“,ch);解析:解析:while 循环的执行过程如下: 计算 while后面圆括号中表达式的值,当值为非 0时,执步骤;当值为 0时,执行步骤: 执行循环体一次: 转去执行步骤; 退出循环。 在选项 C)中,表达式(ch=getchar()!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行

20、循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。2.若有以下程序 main()int a=2,b=0; while(a+) +b: printf(“d,dn“,a,b);则程序的输出结果是(分数:2.00)A.0,2B.1,2 C.1,3D.2,3解析:解析:循环体执行两次,第一次表达式 a+值为2,a 的值为1,执行循环体+b,b 值为 1,第二次表达式 a+值为1,a 的值等于 0,执行+b,b 值为 2,第三次判断条件 a+,表达式值为 0,不执行循环体,但是条件判断以后,a 的值为 1。3.由以下 while构成的循环,循环体执行的次数是 int

21、 k=0;while(k=1)k+;(分数:2.00)A.一次也不执行B.执行一次C.无限次 D.有语法错,不能执行解析:解析:循环条件表达式为赋值表达式 k=1,因此循环执行无限次。4.有以下程序 main()int a=2,b=0;while(a+&+b);printf(“d,dn“,a,b);程序运行后输出结果是(分数:2.00)A.0,3B.1,2 C.1,3D.0,2解析:解析:循环体为空,共执行 2次。第一次变量 a初值为2,b 初值为 0,表达式 a+&+b值为1,同时 a的值为1,b 的值为 1,第二次循环条件判断以后,a 的值为 0,b 的值 2,执行循环体空,第三次判断条件

22、表达式值为 0,不执行循环体,而 a的值为 1,但是表达式 a+的值为 0,因此不计算表达式+b的值,b 的值仍为 2。5.关于 do循环体 while(条件表达式);以下叙述中正确的是(分数:2.00)A.循环体的执行次数总是比条件表达式的执行次数多一次B.条件表达式的执行次数总是比循环体的执行次数多一次C.条件表达式的执行次数与循环体的执行次数无关D.条件表达式的执行次数与循环体的执行次数一样 解析:解析:dowhile 语句先执行语句,后判断表达式的值。故 doVwhile语句又称“直到型”循环结构。由于是先执行后判断,因此 dowhile语句的循环语句至少被执一次,循环条件至少判断一次

23、。6.以下不构成无限循环的语句或语句组是(分数:2.00)A.n=0;do+n;while(n=0); B.n=0;while(1)n+;C.n=10;while(n);n-;D.for(n=0,i=1;i+)n+=i;解析:解析:选项 B)中 while(1)永远为真所以进入死碥环,选项 C)中 whiIe(n=10)同理,选项 D)中 for循环没有循环限定条件也将进入无限循环,只有选项 A)中 while(n=0)循环判定成立,循环将不进入无限循环。7.有以下程序 main() int i=5; do if(i3=1) if(i5=2)printf(“*d“,i); break; i+;

24、 while(i!=0); printf(“n“);程序的运行结果是(分数:2.00)A.*3*5B.*5C.*7 D.*2*6解析:解析:由于循环变量 i的初值等于 5,所以第一、二次进入 dowhile循环语句时,条件语句if(i3=1),if(i5=2)printf(“*d”,i);break;不执行,只执行 i+语句。当 i=7时,满足条件语句 if(i3=1),if(i5=2)printf(“*d“,i);break;,所以输出*7,结束循环。8.若变量已正确定义,有以下程序段 i=0;doprintf(“d,“,i);while(i+);printf(“dn“,i);其输出结果是(

25、分数:2.00)A.0,0B.1,1C.0,1 D.程序进入无限循环解析:解析:dowhile 循环的执行过程如下:执行 do后面的循环体中的语句。计算 while后一对圆括号中表达式的值。当值为非 0时,转去执行步骤:当值为 0时,执仃步骤。退出 dowhiIe循环。对于本题变量 i的初始值等于“0”,接着执行 do后而的循环体中的语句,输出变量 i的值 0。再判断 while后面括号中表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,所以再次输出 i值“1”。9.若有以下程序 main()int a=2,b=0; do+b;while(a+); printf

26、(“d,dn“,a,b);则程序的输出结果是(分数:2.00)A.0,2B.1,2C.1,3 D.2,3解析:解析:由于 a的初始值等于2,所以 while循环语言执行二次结束,第一次 a=2,b=1,然后判断循环条件 a+非零,执行第二次循环体 a=1,b=2,判断循环条件非零,执行循环体 a=0,b=3,判断循环条件为 0,此时变量 a的值等于 1。10.有以下程序 main()int a=3; doprintf(“d,“,a=2);while(!(-a); printf(“n“);程序运行后的输出结果是(分数:2.00)A.1,B.1,2, C.3,0,D.1,0解析:解析:循环体执行两

27、次。首先输出 a=1,然后判断表达式!(-a),a 为 0,循环条件表达式值为 1,执行第二次循环体,输出 a=2。判断循环条件表达式值为 0,循环退出。11.若 i和 k都是 int类型变量,有以下 for语句 for(i=0,k=1; k=1; k+)printf(“*n“);下面关于语句执行情况的叙述中正确的是(分数:2.00)A.循环体执行两次B.循环体执行一次C.循环体一次也不能执行D.构成无限循环 解析:解析:本题考查 for循环。本题的 for循环初始条件为 i=0,k=1:循环结束条件为 k=1永远为真(k不为 0),因此循环不能结束。12.若 k是 int类型变量,且有以下

28、for语句 1for(k=1;k0;k+)printf(“*n“);下面关于语句执行情况的叙述中正确的是(分数:2.00)A.循环体执行两次B.循环体执行一次 C.循环体一次也不执行D.构成无限循环解析:解析:本题考查 for循环的使用。在程序中,for 循环的初始值 k=1,循环结束条件是 k0,每次循环 k增加 1,第一一次进入循环的时候 k为1,k 小于 0,执行打印,然后 k的值变成 0,下次进入循环 k不小于 0,循环结束,因此循环只能执行一次。13.有以下程序段 int i,n;for(i=0;i8;i+)n=rand()5; switch(n) case 1: case 3:pr

29、intf(“dn“,n);break; case 2: case 4:printf(“dn“,n);continue; case 0:exit(0);printf(“dn“,n);以下关于程序段执行情况的叙述,正确的是(分数:2.00)A.当产生的随机数 n为 4时结束循环操作B.当产生的随机数 n为 1和 2时不做任何操作C.当产生的随机数 n为 0时结束程序运行 D.for循环语句固定执行 8次解析:解析:rand()函数功能为产生一个随机数,rand()5,则产生 04 之间的任意随机数,当产生的随机数 n为 0时,执行“casc 0:exit(0)”这条语句,结束程序的运行。14.有以

30、下程序#includestdiohmain()int y=9; for(;y0;y-) if(y3=0)printf(“d“,-y);程序的运行结果是(分数:2.00)A.963B.852 C.741D.875421解析:解析:y 的值的初值为 9,所以在 for循环中,当 y的值为 9、6 或 3时,if 语句的条件成立,执行输出句,输出表达式-y 的值。因为自减符号在 y的前面,所以首先 y的自减 1,然后再输出 y的值,故输出结果为 8 5 2。15.有以下程序#includestdiohmain() int i,j,m=1; for(i=1;i3;i+) for(j=3;j0;j-)

31、if(i*j3)break; m*=i*j; printf(“m=dn“,m);程序运行后的输出结果是(分数:2.00)A.m=2B.m=4C.m=5D.m=6 解析:解析:这道题考查了 for循环的嵌套应用。对于外层 for循环来说,变量 i从 1增到 2,循环执行2次。当变量 i的值等于 1时,对于内层 for循环水说,变量 i从 3减到 1,求得变量 m的值等于 6。当变量 i的值等于 2时,第一遍执行内层 for循坏,变量 i的值等于 3,那么 i*j的值等于 6,其值大于3,这时执行 break语句,退出内层 for循环的执行。所以程序输出变量 m的值为 6。16.有以下程序#inc

32、ludestdioh void main() int c=0,k; for(k=1;k3;k+) switch(k) default:c+=k; case 2:c+;break; case 4:c+=2;break; printf(“dn“,c);(分数:2.00)A.9B.7C.5D.3 解析:解析:在这段程序中,整型变量 c的初始值赋为 0,在第一次执行 for循环语句时,因为此时变量k的值等于 1,所以在 switch语句中首先执行 default语句,给变量 c的值加 1,因为在 default语句后面没有 break语句,所以就会接着执行 case 2这条语句,再给变量 c的值加 1

33、,其值变为 2,这时退出switch语句块,进入第二次 for循环,此时 k的值等于 2,就会执行 switch语句块中的 case2这条语句,再给变量 c的值加 1,这时变量 c的值就是 3,此时退出 switch语句块,循环变量 k的值加 1,成为 3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量 c的值再屏幕上输出。17.有以下程序#includestdiohmain() int i,j; for(i=3;i=1;i-) for(j=1;j=2;j+)printf(“d“,i+j); printf(“n“);程序的运行结果是(分数:2.00)A.4 3 2 5 4 3B.2

34、3 3 4 4 5C.4 5 3 4 2 3 D.2 3 3 4 2 3解析:解析:本题中的外层行变量 i从 3逐次递减到 1,共输出 3行。内层列变量 i每次从 1递增到 2,每行输出 2个数字。所以当 i=3时,第一行输出 i+1=4 i+2=5,即 4 5;当 i=2时,第一行输出 i+1=3和i+2=4,即 3 4;当 i=1时,第一行输出 i+1=2和 i+2=3,即 2 3。18.设变量己正确定义,则以下能正确计算 f=n!的程序段是(分数:2.00)A.f=0; for(i=1;i=n;i+)f*=i;B.f=1; for(i=1;in;i+) f*=i;C.f=1; for(i

35、=n;i1;i+)f*=i;D.f=1; for(i=n;i=2;i-) f*=i; 解析:解析:本题主要考查 for循环的使用。题目要求计算阶乘 n!,通过 for循环来实现,循环变量 i可以从 1到 n(包括 n)或者从 n到 1,在循环体内做累乘。选项 A)中,累乘变量的初值为 0,最终计算结果也为 0;选项 B)中循环次数为 n1 次,累乘结果少乘了 n;选项 C)是死循环;选项 D)正确。19.有以下程序 main()int i; for(i=1;i=40;i+) if(i+5=0) if(+i8=0)printf(“d“,i); printf(“n“);执行后的输出结果是(分数:2

36、.00)A.24B.5C.32 D.40解析:解析:在 for循环体中,先判断自变量 i能否被 5整除,然后自加两次,最后判断 i能否被 8整除。当 for循叫执行到第 30次时,i 的值为 30能被 5整除,然后 i经过两次自加 1运算,值变为 32,能被 8整除,放执行“printf(“d“i):”语句,即输出 32。20.有以下程序#includestdiohvoid main()char b,c;int i; b=a;c=A; for(i=0;i6;i+) if(i2)putchar(i+b); else putchar(i+c); printf(“n“);程序运行后的输出结果是(分数

37、:2.00)A.ABCDEFB.aBcDeFC.abcdefD.AbCdEf 解析:解析:循环变量 i从 0依玖递增到 5,依次输出字母 A,b,C,d,E,f。21.有以下程序 main()int a=1,b=2;for(;a8;a+) b+=a; a+=2;printf(“d,dn“,a,b);程序运行后的输出结果是(分数:2.00)A.8,11B.10,14 C.7,11D.9,18解析:解析:在这段程序中变量 a的初值等于 1,变量 b的初值等于 2。第 1次执行 for循环语句后,变量 a的值等于 3,变量 b的值等于 3。第 2次执行 for循环后,变量 a等于 6,变量 b的值等

38、于 7。第 3次执行 for循环后,变量 a等于 9,变量 b的值等于 14。第 4次执行 for循环后,变量 a等于 10,这时退出 for循环,此时变量 b的值等于 14。因而程序输出变量 a,b 的值分别为 10,14。22.有以下程序段 int i,n;for(i=0;i8;i+) n=rand()5; switch(n) case 1: case 3:printf(“dn“,n);break; case 2: case 4:printf(“dn“,n);continue; case 0:exit(0); printf(“dn“,n);(分数:2.00)A.当产生的随机数 n为 4时结

39、束循环操作B.当产生的随机数 n为 1和 2时不做任何操作C.当产生的随机数 n为 0时结束程序运行 D.for循环语句固定执行 8次解析:解析:rand()函数功能为产生一个随机数,rand()5,则产生 0-4之间的任意随机数,当产生的随机数 n为 0时,执行 case 0:exit(0)这条语句,结束程序的运行。23.若有以下程序 main()int a=6,b=0,c=0; for(;a;) b+=a; a=+c; printf(“d,d,dn“,a,b,c);则程序的输出结果是(分数:2.00)A.1,14,3B.0,18,3C.0,14,3 D.0,14,6解析:解析:循环体执行三

40、次,a 初值 6,第一次执行循环体,b=6,a=5。继续执行循环体,b=11,a=3,第三次执行循环体,b=14,a=0,循环退出。24.若有以下程序 main()int a=6,b=0,c=0; for(;a&(b=0);) b+=a; a=c+; printf(“d,d,dn“,a,b,c);则程序的输出结果是(分数:2.00)A.6,0,0B.5,6,0C.6,6,1 D.5,6,1解析:解析:循环条什 a&(b=0),a 非零同时 b=0则执行循环体,否则退出。循环体执行一次,此时b=6,a=6,c=1。25.以下叙述中正确的是(分数:2.00)A.对于“for(表达式 1;表达式 2

41、;表达式 3)循环体”首先要计算表达式 2的值,以便决定是否开始循环B.对于“for(表达式 1;表达式 2;表达式 3)循环体”,只在个别情况下才能转换成 while语句C.只要适当地修改代码,就可以将 do-while与 while相互转换 D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用 while语句解析:解析:while 和 dowhile语句和 for语句很容易进行相互转换。对于 for循环的执行过程如下: 计算表达式 1。计算表达式 2。若其值为非 0,转步骤;若其值为 0,转步骤。执行一次 for循环体。计算表达式 3,转向步螺。结束循环。任何循环都有可能

42、成为死循环。26.若有以下程序#include char*a=“you“: char b=“Welcome you to China!“; main()int i,j=0;char*p; for(i=0;bi!=0;i+) if(*a=bi) p=a; for(j=i;*p!=0;j+) if(*p!=bj)break; p+; if(*p=0)break; printf(“s“,&bi);则程序的输出结果是(分数:2.00)A.you to China! B.to China!C.me you to China!D.China!解析:解析:程序中循环部分的主要功能是,在字符串 b中寻找是否含

43、有子串 a,如果含有则退出,此时i为子串 a在字符串 b中第一次出现的位置,因此最后的输出函数则从第 i个字符开始一直输出到字符串的末尾。27.以下程序段中的变量已正确定义 for(i=0;i4:i+,i+) for(k=1;k3;k+); printf(“*“);程序段的输出结果是(分数:2.00)A.*B.*C.*D.* 解析:解析:本题考查循环语句,题中第二个(内层)for 循环之后有一个分号,意思是每次循环种的操作为空,不执行任何操作。冉循环结束后执行 printf语句,即只打出一个*。28.有以下程序 main() int i,j; for(i=1;i4;i+) for(j=i;j4

44、;j+) printf(“d*d=d”,i,j,i*j); printf(“n“); (分数:2.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9C.1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 D.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9解析:解析:外层 for循环自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自变量 i的每一个值,内层循环的自变量 i每次从 i开始,每次循环后增 1,直到 j等于 3结束

45、。所以往每次外循环开始后,内层循环在一行先打印 i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。29.有以下程序 #includestdioh main() int i,j,m=55; for(i=1;i=3;i+) for(j=3;j=i;j+)m=mj; printf(“dn“,m); 程序的运行结果是(分数:2.00)A.0B.1 C.2D.3解析:解析:在程序中,内层循环判断条件为“j=i”,而 i的初值为 3,故当外层循环变量 i的值为 1和 2时,内层循环体都不会被执行。只有当 i和 j都等于 3时循环才会执行一次。因为 m的值为 55对 3求余结果为 1。3

46、0.以下叙述中正确的是(分数:2.00)A.循环发生嵌套时,最多只能两层B.三种循环 for,while,do-while 可以互相嵌套 C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D.for语句的圆括号中的表达式不能都省略掉解析:解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for 循环、while 循环、do-while 循环可以互相嵌套,但每层循环在逻辑上必须完整。而在 for语句中,for 语句中的表达式可以部分或全部省略,但两个“;”不可省略。31.有以下程序 main() int i,j,x=0; fo

47、r(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j2)continue; x+; x+; printf(“x=dn“,x);程序执行后的输出结果是(分数:2.00)A.x=4B.x=6C.x=12D.x=8 解析:解析:在第 1次外层 for循环中,首先 x+得到 x=1。进入到内层 for循环,只有循环变量 i的值为奇数时,变鞋 x的值才自加 1,所以在内层 for循环执行过程中,变量 x的值自加两次,当退出内层for循环时,x=3,然后执行 x+,得到 x=4。在进入执行第 2次外层 for循环中,首先 x+得到 x=5。进入到内层 fof循环,只有循环变量 j的值为奇数时,变量 x的值才自加 1,所以在内层 for循环执行过程中,变量 x的值自加 1两次,当退出内层 for循环时,x=7,然后执行 x+,得到 x=8,

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1