循环结构程序设计习题答案
一、单选题。
1. 下面有关for循环的正确描述是( )
A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判定表达式 C.在for循环中,不能用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来 [解答]:D。
2. 对于for(表达式1;;表达式3)可理解为()
A.for(表达式1;1;表达式3) B.for(表达式1:1;表达式3)
C.for(表达式1;表达式1;表达式3) D.for(表达式1;表达式3;表达式3) [解答]:B。
3. 以下正确的描述是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时,只能使用goto语句 [解答]:B。
4. C语言中( )。
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出
C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环 D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环 [解答]:D。
5. C语言中while和do-while循环的主要区别是( )
A.do—while的循环体至少无条件执行一次
B.while的循环控制条件比do—while的循环控制条件严格 C.do—while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 [解答]:A。
6. 下面程序段不是死循环的是()。
A.int I=100; B.for ( ; ; );
while(1) { I=I0+1;
if(I>100) break;
}
C.int k=0; D.int s=36;
do{++k; } while(s); while(k>=0); --s; [解答]:C。
7. 以下能正确计算1*2*3*??*10的程序是()。
A.do{i=1;s=1; B.do{i=1;s=0;
s=s*i; s=s*i; i++; i++;
}while(i<=10); }while(i<=10); C.i=1;s=1; D.i=1;s=0;
do{ s=s*i; do{ s=s*i;
i++; i++;
}while(i<=10); }while(i<=10); [解答]:C。
8. 下面程序的运行结果是( )。
#include
printf(\
A.-1 B.1 C.8 D.0 [解答]:B。
9. 下面程序的运行结果是()。
#include
while(num<=2) { num++;
printf(\} }
A.1 B.1 2 C.1 2 3 D.1 2 3 4 [解答]:C。
10.若运行以下程序时,从键盘输入3.6 2.4
结果是( )。 #include
{ float x,y,z;
scanf(“%f%f”,&x,&y); z=x/y; while(1)
{ if(fabs(z)>1.0)
{ x=y;y=z;z=x/y;}
else
break;
}
printf(“%f\\n”,y); }
A.1.500000 B.1.600000 C.2.000000 D.2.400000 [解答]:B。
二、看程序,写运行结果。
1. 若运行以下程序时,从键盘输入2473↙,则下面程序的运行结果是()。
#include
while((c=getchar())!=’\\n’) switch(c-‘2’) {case 0:
case1: putchar(c+4); case2: putchar(c+4);break
case3: putchar(c+3);
default: putchar(c+2);break; }
printf(“\\n”); }
[解答]:668977。
2. 若运行以下程序时,从键盘输入ADescriptor↙,则下面程序的运行结果是()。
#include
Int v0=0,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’:v+=1; default:v0+=1;v2+=1;}
}while(c!=’n\\’);
printf(“v0=%d,v1=%d,v2=%d\\n”,v0,v1,v2); }
[解答]:v0=12,v1=4,v2=12。
3. 下面程序的运行结果是()。
#include
for(i=1;i<=5;i++) { b=i%2;
while(b- ->=0) k++; }
printf(“%d,%d”,k,b); }
[解答]:8,-2。
4. 下面程序的运行结果是()。
#include
for (a=1,b=1;a<=100;a++) { if(b>=20) break;
if(b%3==1) {b+=3; continue;} b-=5; }
printf(“%d\\n”,a); }
[解答]:8。
5. 下面程序的运行结果是()。
#include
for (i=0;i<2;i++) { x++;
for(j=0;j<=3;j++) { if(j%2) continue; x++; } x++; }
printf(“x=%d\\n”,x); }
[解答]:x=8。
6. 下面程序的运行结果是()。
#include
for (i=1;i<=5;i++)
{ if(i%2) printf(“*”); else continue; printf(“#”); }
printf(“$\\n”); }
[解答]:*#*#*#$。
7. 下面程序的运行结果是( )。
#include
{ for (j=0; j<4; j++)
{ if (j%2) break; a++; } a++; }
printf(“%d\\n”,a); }
[解答]:4。
8. 下列程序运行后的输出结果是( )。
#include
int i,j,k;
for(i=1;i<=4;i++) {
for(j=1;j<=20-3*i;j++) printf(\
for(k=1;k<=2*i-1;k++) printf(\printf(\}
for(i=3;i>0;i--)