版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(C语言程序设
计)模拟试卷14
一、选择题(本题共37题,每题1.0分,共37分。)
1有以下程序#includemain(){inta=7;while(a-);printf(n%d\n",a);}程序
运行后的输出结果是
A、0
B、1
C、1
D、7
标准答案:C
知识点解析:在while语句中,先判断while后面的表达式是否为0,如果为0,则
退出循环,否则执行循环体“在本题中,当变量a的值经过几次循环后,其值等于
0时二退出while循环语句,变量a再执行自减运算,所以其值等于一1。
2、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是
A、(E>0IIE<0)
B、(!E==0)
C、(E!=0)
D、(E==0)
标准答案:A
知识点解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但
不能为空,由它来控制循环体是否执行。在选项A中表达式E>01IE<0是一个逻辑
表达式。
3、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量己正确
定义,以下正确的程序段是
A、while(ch=getchar()=)printf^n%c"»ch);
B、while(ch=getchar()==,,N,,)printf("%c",ch);
C、while((ch=getchar())!=,N,)printf("%cH,ch);
D、while((ch=gctchar0)='N')printfp%c",ch);
标准答案:C
知识点露析:while循环的执行过程如下:①计算while后面圆括号中表达式的
值,当值为非。时,执行步骤②;当值为。时,执行步骤④;②执行循环体一
次;③转去执行步骤①;④退出循环。在选项C中,表达式(ch=geichar())!
='N,表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印
输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循
环。
4、若有以下程序main(){inta=-2,b=0;while(a++)++b;printf("%d,%d
\n”,a,b);}则程序的输出结果是
A、0,2
B、1,2
C、1,3
D、2,3
标准答案:B
知识点解析:循环体执行两次,第一次表达式a++值为一2,a的值为一1,执行
循环体++b,b值为1,第二次表达式a++值为一1,a的值等于0,执行++
b,b值为2,第三次判断条件a++,表达式值为0,不执行循环体,但是条件判
断以后,a的值为lo
5、由以下while构成的循环,循环体执行的次数是intk=0;while(k=l)k++:
A、一次也不执行
B、执行一次
C、无限次
D、有语法错,不能执行
标准答案:C
知识点解析:循环条件表达式为赋值表达式k=l,因此循环执行无限次。
6、有以下程序main0{inta=—2,b=0;while(a++&&++b);printf("%d,%d
\n%a,b);}程序运行后输出结果是
A、0,3
B、1,2
C、1,3
D、0,2
标准答案:B
知识点解析:循环体为空,共执行2次。第一次变量a初值为一2,b初值为0,表
达式a++&&++b值为1,同时a的值为一1,b的值为1,第二次循环条件判断
以后,a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执
行循环体,而a的值为1,但是表达式a++的值为0,因此不计算表达式++b的
值,b的值仍为2。
7、关于do循环体while(条件表达式);以下叙述中正确的是
A、循环体的执行次数总是比条件表达式的执行次数多一次
B、条件表达式的执行次数总是比循环体的执行次数多一次
C、条件表达式的执行次数与循环体的执行次数无关
D、条件表达式的执行次数与循环体的执行次数一样
标准答案:D
知识点解析:do-while语句先执行语句,后判断表达式的值。故do—while语句
又称“直到型”循环结构°由于是先执行后判断,因比do-while语句的循环语句至
少被执行一次,循环条件至少判断一次。
8、以下不构成无限循环的语句或语句组是
A、n=0;do{++n;)while(n<=0);
B、n=0;while(l)(n+4-;}
C、n=10;while(n);{n—;}
D、for(n=0,i=1;;i++)n+=i;
标准答案:A
知识点解析:选项B中while(l)永远为真所以进入死循环,选项C中,while(n=
10)同理,选项D中for循环没有循环限定条件也将进入无限循环,只有选项A中
while(nV=0)循环判定成立,循环将不进入无限循环。
9、有以下程序main。{inti=5;do{if(i%3=1)if(i%5=2){printf(”**%d",i);
break:}i++;)while(i!=0);printf("\n");}程序的运行结果是
A、*3*5
B、*5
C、*7
D、*2*6
标准答案:C
知识点解析:由于循环变量i的初值等于5,所以第一、二次进入do....while循环
语句时,条件语句if(i%3==l),if(i%5=2){priutf("%d”,i);break;}不执行,只
执行i++语句。当i=7时,满足条件语句if(i%3==l),if(i%5==2){printf(”*%
d",i);break;),所以输出*7,结束循环。
10>若变量已正确定义,有以下程序段i=0;doprintf("%d;',i);while(i++);
printf(n%d\n';i);其输出结果是
A、0,0
B、1,1
C、0,1
D、程序进入无限循环
标准答案:C
知识点解析:d0…while循环的执行过程如下:①执行do后面的循环体中的语
句。②计算while后一对圆括号中表达式的值。当值为非0时,转去执行步骤
①;当值为0时,执行步骤③。③退出do...while循环。对于本题变量i的初始值
等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断while后
面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加
已经变为1,所以再次输出i的值“1”。
11、若有以下程序main(){inia=—2,b=0;do{++b;}while(a++);
printf(n%d,%d\n",a,b):}则程序的输出结果是
15、有以卜程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n)
{case1:case3:printf;"%d\n",n);break;case2:case4:printf("%d\n",
n);continue;case0:exit(O);)printf("%d\n",n):}以下关于程序段执行情况
的叙述,正确的是
A、当产生的随机数n为4时结束循环操作
B、当产生的随机数n为1和2时不做任何操作
C、当产生的随机数n为0时结束程序运行
D、for循环语句固定执行8次
标准答案:C
知识点解析:rand。函数功能为产生一个随机数,rand()%5,则产生0〜4之间的任
意随机数,当产生的随机数n为。时,执行“case。:exit(O)”这条语句,结束程序的
运行。
16、有以下程序#includemain。{inty=9;for(;y>0:y—)if(y%3==0)printfi'1%
d",-y);}程序的运行结果是
A、963
B、852
C、741
D、875421
标准答案:B
知识点解析:y的值的初值为9,所以在for循环中,当y的值为9、6或3时,if
语句的条件成立,执行瑜出语句,输出表达式的值。因为自减符号在y的前
面,所以首先y的自减1,然后再输出y的值,故输出结果为852。
17、有以下程序#includemain。{inti,j,m=1;for(i=l;i<3;i++){for(j=3;j
>0;j-){if(i*j>3)break;m*=i*j;}}pfinff("m=%d\n",m);}程序运行后的
输出结果是
A、m=2
B、m=4
C>m=5
D、m=6
标准答案:D
知识点解析:这道题考查了for。循环的嵌套应用。对于外层for循环来说,变量i
从1增到2,循环执行2次。当变量i的值等于1时,对于内层for循环来说,变量
j从3减到1,求得变量m的值等于6。当变量i的值等于2时,第一遍执行内层
for循环,变量j的值等于3,那么i*j的值等于6,其值大于3,这时执行break语
句,退出内层for循环的执行。所以程序输出变量m的值为6。
18、有以下程序#includevoidmain。{intc=0,k;for(k=1;k<3;k++)
switch(k){default:c+=k;case2:c++;break:case4:c+=2;break;}
pfintf("%d\n",c);}
A、9
B、7
C、5
D、3
标准答案:D
知识点解析:在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环
语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,
给变量c的值加1,因为在defauk语句后面没有break语句,所以就会接着执行
case2这条语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入
第二次for循环,此时k的值等于2,就会执行switch语句块中的casc2这条语
句,再给变量c的值加1,这时变量c的值就是3,此时退出swilch语句块,循环
变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语
句,把变量c的值在屏幕上输出。
19、有以下程序#includemain。{inti,j;for(i=3;i>=1;i—)(for(j=1;j<=
2:j++)printf("%d”,i+j);printf("\n");}}程序的运行结果是
A、432543
B、233445
C、453423
D、233423
标准答案:C
知识点解析:本题中的外层行变量i从3逐次递减到1,共输出3行。内层列变量j
每次从1递增到2,每行输出2个数字。所以当i=3时,第一行输出i+l=4i+2
=5,即45;当i=2时,第一行输出i+l=3和i+2=4,即34;当i=l时,第
一行输出i+l=2和i+2=3,即23。
20、设变量己正确定义,则以下能正确计算f=n!的程序段是
A、f=0;for(i=1;i<=n;i++)f*=i;
R、f=1:for(i=1:i<n:i++)t^=i:
C、f=l;for(i=n;i>l;i++)f*=i;
D、f=1;for(i=n:i>=2;i--)f*=i;
标准答案:D
知识点解析:本题主要考查for循环的使用。题目要求计算阶乘n!,通过for循环
来实现,循环变量i可以从1到n(包括n)或者从n到1,在循环体内做累乘。选项
A中,累乘变量的初值为0,最终计算结果也为0:选项B中循环次数为n—1次,
累乘结果少乘了n;选项C是死循环;选项D正确。
21、有以下程序main。{inti;for(i=1;iV=40;i++){if(i++%5==0)if(++
i%8==0)printf("%dH,i):}printfC\n");}执行后的输出结果是
A、24
B、5
C>32
D、40
标准答案:c
知识点.析:在for循仄体中,首先判断自变量i能否被5整除,然后再自加两
次,最后判断i能否被8整除。当for循环执行到笫30次时,i的值为30能被5整
除,然后i经过两次自加1运算,值变为32,能被8整除,故执行"printf
i);”语句,即输出32。
22>有以下程序#includevoidmain(){charb,c;inti;b='a';c='A';for(i=0;i<
6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printfC*\nu);}程序运行
后的输出结果是
A、ABCDEF
B、aBeDeF
C、abcdef
D、AbCdEf
标准答案:D
知识点解析♦:循环变量i从。依次递增到5,依次输出字母.A,b,C,d,E,fo
23、有以卜.程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=
2;)printf(H%d,%d\n”,a,b);}程序运行后的输出结果是
A、8,11
B、10,14
C、7,11
D、9,18
标准答案:B
知识点解析:在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执
行for循环语句后,变量a的值等于3,变量b的值等于3。第2次执行for循环
后,变量a等于6,变量b的值等于7。第3次执行for循环后,变量a等于9,变
量b的值等于14。第4次执行for循环后,变量a等于10,这时退出for循环,此
时变量b的值等于14c因而程序输出变量的值分别为10,14c
24、有以下程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n)
{case1:case3:printf;"%d\n",n);break;case2:case4:printf("%d\n",
n);continue;case0:exit(0);)printf("%d\n",n):}
A、当产生的随机数n为4时结束循环操作
B、当产生的随机数n为1和2时不做任何操作
C、当产生的随机数n为。时结束程序运行
D、for循环语句固定执行8次
标准答案:C
知识点解析:rand()函数功能为产生一个随机数,rand()%5,则产生0〜4之间的任
意随机数,当产生的随机数n为。时,执行case。:exit(0)这条语句,结束程序的
运行。
25、若有以卜.程序main(){inia=6,b=0,c=0;for(;a;){b+=a;a—=++
C:)printf("%d,%d,%d\n';a,b,c);}则程序的输出结果是
A、1,14,3
B、0,18,3
C、0,14,3
D、0J4,6
标准答案:C
知识点解析:循环体执行三次,a初值6,第一次执行循环体,b=6,a=5o继续
执行循环体,b=ll,a=3,第三次执行循环体,b=14,a=0,循环退出。
26、若有以下程序main(){inta=6,b=0,c=0;for(;a&&(b==0);){b+=a;
a—=c++;)printf("%d,%d,%d\n”,a,b,c);}则程序的输出结果是
A、6,0,0
B、5,6,0
C、6,6,1
D、5,6,1
标准答案:C
知识点解析:循环条件a&&(b==0),a非零同时b=0则执行循环体,否则退出。
循环体执行一次,此时b—6,a—6,c—1o
27、以下叙述中正确的是
A、对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以
便决定是否开始循环
B、对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成
while语句
C、只要适当地修改代码,就可以将do-while与while相互转换
D、如果根据算法需要使用无限循环(即通常所称的“死循环)则只能使用whh语
句
标准答案:C
知识点解析:while和do...while语句和for语句很容易进行相互转换。对于for循
环的执行过程如下:①计算表达式1。②计算表达式2。若其值为非0,转步骤
③;若其值为0,转步骤⑤。③执行一次for循环体。④计算表达式3,转向步骤
②。⑤结束循环。任何循环都有可能成为死循环。
28、若有以下程序#includechar*a="you";charb|]="WelcomeyoutoChina!";
main(){intij=O;char*p;for(i=0;b[i]!=>\0>;i++){if(*a==b[i]){p=a;
for(j=i;*p!=,\0,;j++){if(*P!=b[j])break;p++;}if(*p==,\
O^break;)}printf(H%s",&b[i]);}则程序的输出结果是
A、youtoChina!
B、toChina!
C、meyoutoChina!
D、China!
标准答案:A
知识点解析:程序中循环部分的主要功能是,在字符串b中寻找是否含有子串a,
如果含有则退出,此时i为子串a在字符串b中第一次出现的位置。因此最后的输
出函数则从第i个字符开始一直输出到字符串的末尾。
29、以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=l;k<
3;k++);printfC'*");程序段的输出结果是
、不不干年不不不不
B、****
C、六
D、*
标准答案:D
知识点解析:本题考查循环语句,题中第二个(内层)for循环之后有一个分号,意
思是每次循环中的操作为空,不执行任何操作。再循环结束后执行prinlf语句:即
只打出一个*。
30、有以下程序main(){intij;for(i=l;i<4;i++){for(j=i;j<4;j++)
printf(”%d*%d=%d",i,j,i*j);printfC*\n");}}
A、1*1=11*2=21*3=32*1=22*2=43*1=3
B、1*1=11*2=22*2=41*3=32*3=63*3=9
C、1*1=11*2=21*3=32*2=42*3=63*3=9
D、1*1=12*1=22*2=43*1=33*2=63*3=9
标准答案:C
知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结
束。对于外层循环自变量i的每一个值,内层循环的自变量i每次从i开始,每次
循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打
印白=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。
31、有以下程序程ncludemain。{inti,j,m=55;for(i=1;i<=3;i++)for(j=
3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是
A、0
B、1
C、2
D、3
标准答案:B
知识点解析:在程序中,内层循环判断条件为=而j的初值为3,故当外层
循环变量i的值为1和2时,内层循环体都不会被执行。只有当i和i都等于3时
循环才会执行一次。因为m的值为55对3求余结果为1。
32、以下叙述中正确的是
A、循环发生嵌套时,最多只能两层
三种循环for,while,do—while可以互相嵌套
C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误
D、for语句的圆括号中的表达式不能都省略掉
标准答案:B
知识点解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌
套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-
while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语
句中的表达式可以部分或全部省略,但两个“:”不可省略。
33、有以下程序main。{inti,j,x=0;for(i=O;i<2;i++){x++;for(j=0:j
<=3;j++){if(j%2)continue;x十十;}x十十;}pnntt("x=%d\n",x);)
程序执行后的输出结果是
A、x=4
B、x=6
C、x=12
D、x=8
标准答案:D
知识点解析:在第1次外层for循环中,首先x++得到x=l。进入到内层for循
环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执
行过程中,变显x的值自加两次,当退出内层for循环时,x—3,然后执行x十
+,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到
内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层
for循环执行过程中,变量x的值自加I两次,当退出内层for循环时,x=7,然后
执行x++,得到x=8,所以打印输出变量x的值为8。
34、有以下程序#includemain。{intx=8;for(:x>0:x—)(if(x%3)(printf("%
d/',x-);continue;)pfintf("%d,",--x);}}程序的运行结果是
A、875,2,
R、97,6,4,
C、7,4,2,
D、8,5,4,2,
标准答案:D
知识点解析:表示先执行程序,再令x的值减1;而表示令x的值减1,
再执行程序。x=8时,x%3为非0值,执行语句{prinf(”%dj,x-);
continue:},输出“8,”,此时经过x--,x的值变由7,跳出此次循环;执行x--,
x=6,x%3=0,后面语句不执行,执行语句printf("%d,",・・x);,输出“5,”;
执行for语句中的x—,得到x=4,判断x%3,输出“4,”,执行两
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城乡教育资源共享模式创新探讨试题考试
- 保育员考试试题完美版
- 九年级英语不规则动词学习手册
- 洗煤厂人力资源管理方案
- 2026中国农业大学实验室管理处非事业编(C岗)招聘1人建设笔试模拟试题及答案解析
- 施工噪声控制管理方案
- 零售企业库存管理优化实践报告
- 浅谈微课在化学教学中的作用-初中-化学-论文
- 天然气公司工作制度范本
- 女职工权益保护工作制度
- 青马工程培训十佳学员答辩
- 2025广西扶绥同正投融资集团限公司招聘24人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年高校教师资格证资格考试题库审定版
- 机场建设安全文明施工保障措施
- 2025年广西南宁邕城公共交通有限公司招聘笔试参考题库含答案解析
- 风电场项目工程建设监理投标文件
- 手术室常用质量改进工具
- 私立学校教师聘任制度
- 国家职业技术技能标准 4-10-04-02 保健按摩师 人社厅发202332号
- 《托育机构管理实务》高职学前教育专业全套教学课件
- 落地式盘扣脚手架专项施工方案
评论
0/150
提交评论