第6章
循环控制
1、设变量已正确定义,则以下能正确计算f = n!的程序段是
A)
f=0; B) f=1;
for(i=1;i<=n;i++)
f*=i; for(i=1;i
C)
f=1; D) f=1;
for(i=n;i>1;i++)
f*=i; for(i=n;i>=2;i--) f*=i;
[D] 教师批改:D
2、有以下程序
main()
{ int k=5,n=0;
while(k>0)
{ switch(k)
{ default : break;
case 1 : n+=k;
case 2 :
case 3 : n+=k;
}
k--;
}
printf("%dn",n);
}
程序运行后的输出结果是
A)0
B)4
C)6
D)7
[D] 教师批改:D
3、有以下程序
main()
{
int a=1,b;
for(b=1;b<=10;b++)
{
if(a>=8) break;
if(a%2==1) { a+=5; continue;}
a-=3;
}
printf("%dn",b);
}
程序运行后的输出结果是
A)3
B)4
C)5
D)6
[B] 教师批改:B
4、有以下程序
main ()
{ int s=0,a=1,n;
scanf("%d",&n);
do
{ s+=1; a=a-2; }
while(a!=n);
printf("%dn",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是
A) -1
B) -3
C) -5
D) 0
[B] 教师批改:B
5、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a;
for(b=1;b<=c;b++) s=s+1;
则与上述程序段功能等价的赋值语句是
A) s=a+b;
B) s=a+c;
C) s=s+c;
D) s=b+c;
[B] 教师批改:B
6、有以下程序
main()
{ int k=4,n=4;
for( ; n
{ n++;
if(n%3!=0) continue;
k--; }
printf("%d,%dn",k,n);
}
程序运行后的输出结果是
A) 1,1
B) 2,2
C) 3,3
D) 4,4
[C] 教师批改:C
7、要求以下程序的功能是计算:
main ()
{ int n; float s;
s=1.0;
for(n=10;n>1;n--)
s=s+1/n;
print("%6.4fn",s);
}
程序运行后输出结果错误,导致错误结果的程序行是
A) s=1.0;
B) for(n=10;n>1;n--)
C) s=s+1/n;
D) printf("%6.4f/n",s);
[C] 教师批改:C
8、有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default:
printf("%d",i);
}
}
执行后输出结果是
A) 011122
B) 012
C) 012020
D) 120
[A] 教师批改:A
9、有以下程序
main()
{ int i=0,s=0;
do{
if(i%2){i++;continue;}
i++;
s +=i;
}while(i<7);
printf("%dn",s);
}
执行后输出结果是
A) 16
B) 12
C) 28
D) 21
[A] 教师批改:A
10、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score); sum+=score;}
ave=sum/4.0;
printf(“NO%d:%fn”,n,ave);
}
}
上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(“NO%d:%fn”,n,ave);
[A] 教师批改:A
11、有以下程序段
int n=0,p;
do{scanf(“%d”,&p);n++;}while(p!=12345
&&n<3);
此处do—while循环的结束条件是
A) P的值不等于12345并且n的值小于3
B) P的值等于12345并且n的值大于等于3
C) P的值不等于12345或者n的值小于3
D) P的值等于12345或者n的值大于等于3
[D] 教师批改:D
12、以下程序中,while循环的循环次数是
main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(I==5) break;
i++;
}
......
}
A) 1
B) 10
C) 6
D) 死循环,不能确定次数
[D] 教师批改:D
13、以下程序的输出结果是
main()
{ int a=0,i;
for(i=;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%dn",a);
}
A) 31
B) 13
C) 10
D) 20
[A] 教师批改:A
14、以下程序的输出结果是
#include
main()
{ int i=0,a=0;
while(i<20)
{ for(;;)
{ if((i%10)==0) break;
else i--;
}
i+=11; a+=i;
}
printh("%dn",a);
}
A) 21
B) 32
C) 33
D) 11
[B] 教师批改:B
15、t为int类型,进人下面的循环之前,t的值为0
while( t=l )
{ …… }
则以下叙述中正确的是
A) 循环控制表达式的值为0
B) 循环控制表达式的值为1
C) 循环控制表达式不合法
D) 以上说法都不对
[D] 教师批改:B
16、以下程序的输出结果是
main()
{ int num= 0;
while(num<=2)
{ num++; printf(“%dn”,num);
}
A) 1
2
3
4
B) 1
2
3
C) 1
2
D) 1
[B] 教师批改:B
17、以下程序的输出结果是
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%dn”,a);
}
A) 101
B) 6
C) 5
D) 4
[D] 教师批改:D
18、有以下程序段
int k=0
while(k=1)k++;
while 循环执行的次数是
A) 无限次
B) 有语法错,不能执行
C) 一次也不执行
D) 执行1次
[A] 教师批改:A
19、以下程序执行后sum的值是
min()
{ int i , sum;
for(i=1;i<6;i++) sum+=i;
printf(“%dn”,sum);
}
A)15
B)14
C) 不确定
D)0
[C] 教师批改:C
20、有以下程序段
int x=3
do
{ printf(“%d”,x-=2); }
while (!(--x));
其输出结果是
A)中 1
B) 3 0
C) 1 -2
D) 死循环
[C] 教师批改:C
21、有如下程序
main0
{ int i,sum;
for(i=1;i<=3;sum++) sum+=i;
printf(“%dn”,sum);
}
该程序的执行结果是 A) 6 B) 3
C) 死循环 D) 0
[C] 教师批改:C
22、有如下程序
main0
{ int x=23;
do
{ printf(“%d”,x--);}
while(!x);
}
该程序的执行结果是 A) 321 B) 23
C) 不输出任何内容 D) 陷入死循环
[B] 教师批改:B
23、有如下程序
main0
{ int n=9;
while(n>6) {n--;printf(“%d”,n);}
}
该程序段的输出结果是 A) 987 B) 876
C) 8765 D) 9876
[B] 教师批改:B
24、以下循环体的执行次数是
main()
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2,
j--)printf("%d n",i);
} A) 3 B) 2
C) 1 D) 0
[C] 教师批改:C
25、以下叙述正确的是 A) do-while语句构成的循环不能用其它语句构成的循环来代替。 B) do-while语句构成的循环只能用break语句退出。
C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D)
用do-while语句构成的循环,在while后的表达式为零时结束循环。
[D] 教师批改:D
26、以下程序段的执行结果是
int a, y;
a=10; y=0;
do
{ a+=2; y+=a;
printf("a=%d y=%dn",a,y);
if(y>20) break;
{ while(a=14); A) a=12 y=12
a=14 y=16
a=16 y=20
a=18 y=24 B) a=12 y=12
a=16
y=28
C) a=12 y=12 D) a=12 y=12
a=14 y=26
a=14
y=44
[B] 教师批改:B
27、以下程序的输出结果是
main( )
{ int x=10,y=10,I;
for(i=0;x>8;y=++i)
printf("%d,%d ",x--,y);
} A) 10 1 9 2 B) 9 8 7 6
C) 10 9 9 0 D) 10 10 9 1
[D] 教师批改:D
28、以下程序的输出结果是
main( )
{ int n=4;
while(n--)printf("%d ",--n);
} A) 2 0 B) 3 1
C) 3 2 1 D) 2 1 0
[A] 教师批改:A
29、以下程序的输出结果是
main( )
{ int i;
for(i=1;i<6;i++)
{ if(i%2){printf("#");continue;}
printf("*");
}
printf("n");
} A)
#*#*# B) #####
C) ***** D) *#*#*
[A] 教师批改:A
30、执行以下程序段时
X=-1;
do {x=x*x; } while(! x); A)
循环体将执行一次 B) 循环体将执行两次
C) 循环体将执行无限次 D)
系统将提示有语法错误
[A] 教师批改:A
31、执行以下程序后,输出的结果是
main
()
{ int y=10;
do { y - -;} while(- - y);
printf("%dn",y - -);
}
A) -1
B) 1
C) 8
D) 0
[D] 教师批改:D
32、在下列选项中,没有构成死循环的程序段是
A) int i=100
while(1)
{ i=i%100+1;
if(i>100)break;
}
B) for( ; ;);
C) int k=1000;
do{++k;}
while(k>=10000); D) int s=36;
while(s);--s;
[C] 教师批改:C
33、执行语句: for(i=l:i++<4:);后,变量i的值是
A) 3
B) 4
C) 5
D) 不定
[C] 教师批改:C
34、以下程序的输出结果是
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<=3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%dn",x);
}
A) x=4
B) x=8
C) x=6
D) x=12
[B] 教师批改:B
35、运行以下程序后,如果从键盘上输入65 14,则输出结果为:
main()
{ int m, n;
printf("Enter m,n;"); scanf("%d%d", &m,&n):
while (m!=n)
{ while (m>n)m-=n;
while (n>m)n-=m;
}
printf("m=%dn",m);
}
A) m=3
B) m=2
C) m=1
D) m=1
[C] 教师批改:C
36、设x和y均为int型变量,则执行下的循环后,y值为
for(y=1,x=1;y<=50;y++)
{ if(x>=10))break;
if (x%2==1)
{ x+=5; continue;}
x-=3;
}
A) 2
B) 4
C) 6
D) 8
[C] 教师批改:C
37、假定a和b为int型变量,则执行以下语句后b的值为
a=1; b=10;
do{
b-=a; a++; } while (b--<0) ;
A) 9
B) -2
C) -1
D) 8
[D] 教师批改:D
38、设j为int型变量,则下面for循环语句的执行结果是
for( j=10;j>3;j--)
{ if(j%3)j--;
--j; --j;
printf("%d ",j);
}
A) 6 3
B) 7 4
C) 6 2
D) 7 3
[B] 教师批改:B
39、若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是
for (i=5;i;i--)
for(j=0;j<4;j++){...}
A)20
B)25
C)24
D)30
[A] 教师批改:A
40、执行下面的程序后,a的值为
main()
{ int a,b;
for
(a=1,b=1;a<=100;a++)
{ if(b>=20)
break;
if(b%3==1) {b+=3; continue; }
b-=5;
}
}
A) 7
B) 8
C) 9
D) 10
[B] 教师批改:B
41、以下程序段的输出结果是
int x=3;
do { printf("%3d",x-=2);} while(!(--x)); A) 1 B) 3
0
C) 1-2 D) 死循环
[C] 教师批改:C
42、下面的程序
main()
{ int x=3;
do {
printf("%dn",X-=2);
}while(!(--x));
} A) 输出的是1 B) 输出的是1和-2
C) 输出的是3和0 D) 是死循环
[B] 教师批改:B
43、下面程序的输出是
main()
{ int y=9;
for( ; y>0; y--)
{ if(y%3==0)
{
printf("%d", --y);continue;}
}
} A) 741 B) 852
C) 963 D) 875421
[B] 教师批改:B
44、若x是int型变量,且有下面的程序片段:
for(x=3; x<6; x++)
printf((x%2)?("**%d"):("##%dn"),x);
上面程序片段的输出结果是 A)
**3
##4
**5 B)
##3
**4
##5
C)
##3
**4##5 D)
**3##4
**5
[D] 教师批改:D
45、请读程序片段:
#include
main()
{ int a, b;
for(a=1;b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
printf("%dn",a);
}
上面程序的输出结果是 A) 7 B) 8
C) 9 D) 10
[B] 教师批改:B
46、请读程序:
#include
main()
{ int mun=0;
while(num<=2)
{ num++; printf("%dn",num);}
}
上面程序的输出结果是 A)
1
2
3
4 B)
1
2
3
C) 1
2 D)
1
[C] 教师批改:C
47、请读程序:
#include
#include
main()
{ float x,y,z;
scan("%f%f",&x,&y);
z=x/y;
while(1)
{ if(fabs(z)>1.0)
{ x=y;
y=z; z=x/y; }
else
break
}
printf("%fn",y);
}
若运行时从键盘上输入3.6
2.4(表示回车),则输出的结果是
A) 1.500000 B) 1.600000
C) 2.000000 D) 2.400000
[B] 教师批改:B
48、执行下面程序片段的结果是( )
int x=23;
do
{ printf("%2d",x--);}
while(!x); A) 打印出321 B)
打印出23
C) 不打印任何内容 D) 陷入死循环
[B] 教师批改:B
49、语句while(!E);中的条件!E等价于( ) 。 A)E = = 0 B)E!=1
C)E!=0 D)~E
[A] 教师批改:A
50、C语言中( )。 A)不能使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
[D] 教师批改:D
51、以下程序的输出结果是( )。
# include
main()
{ int i;
for ( i=1;i<=5;i + +
) {
if ( i%2 ) printf("*");
else continue; printf("#");
}
printf("$n");
} A)
*#*#*#$ B) #*#*#*$
C) *#*#$ D) #*#*$
[A] 教师批改:A
52、设有程序段:
int k=10;
while(k=0)
k=k-1;
则下面描述中正确的是_____。
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
[C] 教师批改:C
53、以下程序段的运行结果是_____。
int n=0;
while(n++<=2);
printf("%d",n); A. 2 B. 3
C. 4 D. 有语法错误
[C] 教师批改:C
54、以下程序段的运行结果是_____。
int a=1,b=2,c=2,t;
while(a
{ t=a; a=b; b=t; c--; }
printf("%d,%d,%d",a,b,c); A. 1,2,0 B.
2,1,0
C. 1,2,1 D. 2,1,1
[A] 教师批改:A
55、下面程序段的运行结果是____。
x=y=0;
while(x<15)
y++ ,x+=++y ;
printf("%d,%d" ,y,x); A. 20,7 B.
6,12
C. 20,8 D. 8,20
[D] 教师批改:D