国家二级C语言机试(C语言程序设计)模拟试卷33
选择题
1.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是(C)
A. while(ch=getchar0=’N’)printf(\\
B. while(ch=getchar()==\\
C. while((ch=getchar())!=’N’)printf(\\
D. while((ch=getchar())==’N’)printf(\\
解析:while循环的执行过程如下:
①计算while后面圆括号中表达式的值,当值为非0时,执行步骤②;当值为0时,执行步骤④;
②执行循环体一次:
③转去执行步骤①;
④退出循环。
在选项C中,表达式(ch=getchar())!=’N’表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。
2.若有以下程序
main(){int a=-2,b=0;
while(a++)
++b;
pfintf(\\(B)
A. 0,2
B. 1,2
C. 1.3
D. 2,3
解析:循环体执行两次,第一次表达式a++值为-2,a的值为-1,执行循环体++b,b值为1,第二次表达式a++值为-1,a的值等于0,执行++b,b值为2,第三次判断条件a++,表达式值为0,不执行循环体,但是条件判断以后,a的值为1。
3.由以下while构成的循环,循环体执行的次数是int k=0;while(k=1)k++;(C)
A. 一次也不执行
B. 执行一次
C. 无限次
D. 有语法错,不能执行
解析:循环条件表达式为赋值表达式k=-1,因此循环执行无限次。
4.有以下程序
main(){ant a=-2,b=0;
while(a++&&++b);
printf(\\(B)
A. 0,3
B. 1,2
C. 1,3
D. 0,2
解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为0,表达式a++&&++b值为1,同时a的值为-1,b的值为1,第二次循环条件判断以后,a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执行循环体,而a的值为1,但是表达式a++的值为0,因此不计算表达式++b的值,b的值仍为2。
5.关于do循环体while(条件表达式);以下叙述中正确的是(D)
A. 循环体的执行次数总是比条件表达式的执行次数多一次
B. 条件表达式的执行次数总是比循环体的执行次数多一次
C. 条件表达式的执行次数与循环体的执行次数无关
D. 条件表达式的执行次数与循环体的执行次数一样
解析:do…while语句先执行语句,后判断表达式的值。故do…Vwhile语句又称“直到型”循环结构。由于是先执行后判断,因此do…while语句的循环语句至少被执行一次,循环条件至少判断一次。
6.以下不构成无限循环的语句或语句组是(A)
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中whilel[1)永远为真所以进入死循环,选项C中while(n=10)同理,选项D中for循环没有循环限定条件也将进入无限循环,只有选项A中while(n<=0)循环判定成立,循环将不进入无限循环。
7.有以下程序
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(\\
8.若变量已正确定义,有以下程序段
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”。
9.若有以下程序
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。
10.有以下程序
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,循环退出。
11.若i和k都是int类型变量,有以下for语句
for(i=0,k=-1;k=1;k++)printf(\\(D)
A. 循环体执行两次
B. 循环体执行一次
C. 循环体一次也不能执行
D. 构成无限循环
解析:本题考查for循环。本题的for循环初始条件为i=0,k=-1;循环结束条件为k=1永远为真(k不为0),因此循环不能结束。
12.若k是int类型变量,且有以下for语句1
for(k=-1;k<0;k++)printf(\\(B)
A. 循环体执行两次
B. 循环体执行一次
C. 循环体一次也不执行
D. 构成无限循环
解析:本题考查for循环的使用。在程序中,for循环的初始值k=-1,循环结束条件是k<0,每次循环k增加1,第一次进入循环的时候k为-1,k小于0,执行打印,然后k的值变成0,下次进入循环k不小于0,循环
本文档预览:3600字符,共12255字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载