国家二级C语言(C语言程序设计)机试模拟试卷13
选择题
1.关于 do 循环体 while (条件表达式); 以下叙述中正确的是(D)
A. 循环体的执行次数总是比条件表达式的执行次数多一次
B. 条件表达式的执行次数总是比循环体的执行次数多一次
C. 条件表达式的执行次数与循环体的执行次数无关
D. 条件表达式的执行次数与循环体的执行次数一样
解析:do-while语句先执行语句,后判断表达式的值。故do-while语句又称“直到型”循环结构。由于是先执行后判断,因此do-while语句的循环语句至少被执行一次,循环条件至少判断一次。
2.以下不构成无限循环的语句或语句组是
A
解析:选项B中while(1)永远为真所以进入死循环,选项C中while(n=10)同理,选项D中for循环没有循环限定条件也将进入无限循环,只有选项A中while(n<=0)循环判定成立,循环将不进入无限循环。
3.有以下程序
main()
{ int i=5;
do
{ if (i%3=1)
if (i%5==2)
{ printf(\\(C)
A. *3*5
B. *5
C. *7
D. *2*6
解析:由于循环变量i的初值等于5,所以第一、二次进入do….while循环语句时,条件语句if(i%3==1), if(i%5==2){printf(“*%d”,i);break;}不执行,只执行i++语句。当i=7时,满足条件语句if(i%3==1),if(i%5==2) {printf(\\
4.若变量已正确定义,有以下程序段
i=0;
do
printf(\\(C)
A. 0,0
B. 1,1
C. 0,1
D. 程序进入无限循环
解析:do…while循环的执行过程如下:①执行do后面的循环体中的语句。②计算while后一对圆括号中表达式的值。当值为非0时,转去执行步骤①;当值为0时,执行步骤③。③退出do…while循环。对于本题变量i的初始值等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断while后面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,所以再次输出i的值“1”。
5.若有以下程序
main() {
int a=-2, b=0;
do {
++b ; } while(a++);
printf(\\(C)
A. 0,2
B. 1,2
C. 1,3
D. 2,3
解析:由于a的初始值等于-2,所以while循环语言执行三次结束,第一次a=-2,b=1,然后判断循环条件a++非零,执行第二次循环体a=-1,b=2,判断循环条件非零,执行循环体a=0,b=3,判断循环条件为0,此时变量a的值等于1。
6.有以下程序
main() {
int a = 3;
do {
printf(\\(B)
A. 1,
B. 1, -2,
C. 3,0,
D. 1,0
解析:循环体执行两次。首先输出a=1,然后判断表达式!(–a),a为0,循环条件表达式值为1,执行第二次循环体,输出a=-2。判断循环条件表达式值为0,循环退出。
7.有以下程序段
int i,n;
for(i=0;i<8;i++)
{
n=rand()%5;
switch(n)
{
case 1:
case 3:printf(\\(B)
A. 当产生的随机数n为4时结束循环操作
B. 当产生的随机数n为1和2时不做任何操作
C. 当产生的随机数n为0时结束程序运行
D. for循环语句固定执行8次
解析:rand()函数功能为产生一个随机数,rand()%5,则产生0~4之间的任意随机数,当产生的随机数n为0时,执行“case 0:exit(0)”这条语句,结束程序的运行。
8.有以下程序
#include <stdio.h>
main( )
{ int y=9;
for(;y>0;y–)
if(y%3= =0) printf(\\(B)
A. 963
B. 852
C. 741
D. 875421
解析:y的值的初值为9,所以在for循环中,当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式–y的值。因为自减符号在y的前面,所以首先y的自减1,然后再输出y的值,故输出结果为8 5 2。
9.有以下程序
#include <stdio.h>
main()
{ int i,j,m=1;
for(i=1;i<3;i++)
{ for(j=3;j>0;j–)
{ if(i*j>3)break;
m*=i*j;
}
}
printf(\\(D)
A. m=2
B. m=4
C. m=5
D. m=6
解析:这道题考查了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。
10.有以下程序
#include <stdio.h>
void main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case 2:c++;break;
case 4:c+=2;break;
}
printf(\\(D)
A. 9
B. 7
C. 5
D. 3
解析:在这段程序中,整型变量c的初始值赋为0,在第一次执行for循环语句时,因为此时变量k的值等于1,所以在switch语句中首先执行default语句,给变量c的值加1,因为在default语句后面没有break语句,所以就会接着执行case 2这条语句,再给变量c的值加1,其值变为2,这时退出switch语句块,进入第二次for循环,此时k的值等于2,就会执行switch语句块中的case2这条语句,再给变量c的值加1,这时变量c的值就是3,此时退出switch语句块,循环变量k的值加1,成为3,此时已不再满足循环条件,执行程序中的最后一条语句,把变量c的值在屏幕上输出。
11.有以下程序
#include<stdio.h>
main()
本文档预览:3600字符,共10025字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载