第6章 循环控制
一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)6.1 对表达式for(表达式1; ;表达式3)可理解为
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
正确答案: B
6.2 在下列选项中,没有构成死循环的是
A)int i=100;
while(1)
{i=i0+1;
if(i>100)break;
}
B)for(;;);
C)int k=10000;
do{k++;}while(k>10000);
D)int s=36;
while(s)--s;
正确答案: D
6.3 下面有关for循环的正确描述是
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
正确答案: D
6.4 若int i,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是
A)9
B)8
C)3
D)2
正确答案: C
6.5 阅读下列程序段,则程序的输出结果是
#include "stdio.h"
main()
{ int a=10,b=10,k;
for(k=0;a>8;b=++k)
printf("%d,%d,",a- -,- -b);
printf("\n");}
A)10,10,10,0,
B)10,9,9,0,
C)10,10,9,1,
D)9,9,9,1,
考生答案: 正确答案: B
6.6 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。
#include
main()
{ int i;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!((i-3)%7))
if(_______)
printf("%d",i);
}
A)i%9=5
B)i%9!=5
C)(i-5)%9!=0
D)(i-5)%9==0
正确答案: D
6.7 下列程序的输出结果是
#include "stdio.h"
main()
{int i,a=0,b=0;
for(i=1;i<10;i++)
{ if(i%2= =0)
{ a++;
continue; }
b++; }
printf("a=%d,b=%d",a,b);}
A)a=4,b=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
正确答案: B
6.8 阅读下列程序,则执行结果是
#include "stdio.h"
main()
{int a=0,b=0,c=0,i;
for(i=0;i<4;i++)
switch(i)
{ case 0:a=i++;
case 1:b=i++;
case 2:c=i++;
case 3:i++; }
printf("%d,%d,%d,%d\n",a,b,c,i);}
A)0,1,3,4
B)1,2,3,4
C)0,1,2,5
D)0,2,3,4
正确答案: C
6.9 阅读下列程序,程序的输出结果是
#include "stdio.h"
main()
{
int m,n;
float k;
for(m=6;m>2;m- -)
{ k=0;
for(n=m;n>1;n- -)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
正确答案: B
6.10 下面程序的运行结果是
#include "stdio.h"
main()
{ int j,i,k=0;
for(j=50;j<=60;j++)
{ if(!(k)) printf("\n");
for(i=2;iif(!(j%i)) break;
if(i>=j-1)
{ printf("%d",j);
k++; }
}
}
A)5359
B)5953
C)3595
D)9535
正确答案: A
6.11 已知
int t=0;
while(t=1)
{...}
则以下叙述正确的是
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
正确答案: B
6.12 设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
正确答案: B
6.13 下列程序的输出结果是
#include "stdio.h"
main()
{ int i=6;
while(i- -)
printf("%d",- -i);
printf("\n");}
A)531
B)420
C)654321
D)死循环
正确答案: B
6.14 对下Ⅰ,Ⅱ两个语句描述正确的是
Ⅰ.while(1)Ⅱ.for(;;)
A)都是无限循环
B)Ⅰ是无限循环,Ⅱ错误
C)Ⅰ循环一次,Ⅱ错误
D)以上答案都错
正确答案: A
6.15 以下程序段的描述,正确的是
x=-1;
do
{x=x*x;}
while(!x);
A)是死循环
B)循环执行两次
C)循环执行一次
D)有语法错误
正确答案: C
6.16 若有如下语句
int x=3;
do{ printf("%d\n",x-=2);}while(!(- -x));
则上面程序段
A)输出的是1
B)输出的是1和-2
C)输出的是3和0
D)是死循环
正确答案: B
6.17 下面程序的运行结果是
#include
main()
{ int a=1,b=10;
do
{ b-=a; a++; }while(b- -<0);
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9
正确答案: B
6.18 若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是#include
main()
{char c;
int v0=1,v1=0,v2=0;
do{switch(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=%d\n",v0,v1,v2);}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
正确答案: D
6.19 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include
main()
{ int i=0,j,k;
do{ i++; k=316-13*i; }while(______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11
B)k
C)k/11==0
D)k==0
正确答案: B
6.20 C语言中 while 和do-while循环的主要区别是
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内
D)do-while 的循环体不能是复合语句
正确答案: A
6.21 下列说法中错误的是
A)只能在循环体内使用break语句
B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C)在while和do…while循环中,continue语句并没有使整个循环终止
D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
正确答案: A
二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)6.22 设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【1】。
for(i=0, j=10; i<=j; i++, j- -) k=i+j;
正确答案: 10
6.23 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。
main()
{int i, x, y=1;
scanf("%d", &x);
for(i=2; i<=x/2; i++)
if【2】{ y=0; break;}
printf("%d\n", y);
}
正确答案: (x%i= =0)
6.24 以下程序的输出结果是【3】。
main()
{ int y=9;
for(; y>0; y- -)
if (y%3= =0)
{ printf("%d", - -y); continue; }
}
正确答案: 852
6.25 阅读下面程序段,则执行后的输出结果为 【4】 。
#include "stdio.h"
main()
{ int a=1;
for(;a<=15;)
if(++a%5!=2) continue;
else printf("%d",a);
printf("\n"); }
正确答案: 2712
6.26 阅读下面语句,则执行后的输出结果为 【5】
#include "stdio.h"
main()
{char a,b;
for(a=′0′,b=′9′;aprintf("%c%c",a,b);
printf("\n");}
正确答案: 0918273645
6.27 阅读下面程序,则执行后程序的结果为 【6】
#include "stdio.h"
main()
{ int a=0,b=0;
while(a<15)a++;
while(b++<15);
printf("%d,%d\n",a,b);}
正确答案: 15,16