第五章循环结构一、选择题1.C语言中while和do_while循环的主要区别是( )。
A.do_while的循环体至少无条件执行一次B.while的循环控制条件比do_while的循环控制条件严格C.do_while允许从外部转到循环体内D.do_while的循环体不能是复合语句2.以下描述中正确的是( )。
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环体中,是先执行一次循环,再进行判断D.do-while循环中,根据情况可以省略while3.语句while (!E); 括号中的表达式!E等价于( ) 。
A.E==0B.E!=1C.E!=0D.E==14.以下程序的功能是计算:s= 1+1/2+1/3+……+1/10main(){ int n; float ss=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序运行后输出结果错误,导致错误结果的程序行是( )。
A.s=1.0;B.for(n=10;n>1;n--)C.s=s+1/n;D.printf("%6.4f\n",s);5.下面程序段的运行结果是( )。
a=1;b=2;c=2;while(a<b<c) { t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);A. 1,2,0B. 2,1,0C. 1,2,1D. 2,1,16.下面程序的功能是在输入的一批正整数中求出最大者,输入0•结束循环,①应选择( )。
main(){ int a,max=0;scanf("%d",&a);while(①){ if(max<a) max=a;scanf("%d",&a);}printf("%d",max);}A. a==0B. aC.!a==1D. !a7.下述循环的循环次数( ) 。
int k=2;while(k=0){ printf(“%d”,k);k--;printf(“\n”);}A.无限次B.0次C.1次D.2次8.有以下程序段int x=1;do{x=x*x;}while(!x);则循环执行的次数是( )。
A. 1次B.2次C.循环条件不全D.死循环9.以下程序段,说法正确的是( )。
int x=-1;do{x=x*x;}while(!x);A.是死循环B.循环执行二次C.循环执行一次D.有语法错误10.下面程序的运行结果是( ):main(){ int num=0;while(num<=2){num++;printf("%d\n",num);}}A. 1B.1C. 1D. 12 2 23 34 11.下面程序的输出结果是( )。
main ( ){ char c=’A’;int k=0;do {switch (c++) {case ‘A’ : k++ ; break ;case ‘B’ : k-- ;case ‘C’ : k+=2 ; break ;case ‘D’ : k%=2 ; continue ;case ‘E’ : k*=10 ; break ;default : k/=3 ;}k++;} while (c<’G’) ;printf (“k=%d”,k) ;}A.k=3B.k=4C.k=2D.k=012.若变量已正确定义,有以下程序段int i=-1;do{ printf(“%d,”,i);}while(i++);printf(“%d\n”,i);其输出结果是( )。
A.-1,0,0B.-1,0,1C.-1,0D.程序进入无限循环13.下面程序的输出是( )main(){ int y=0;while(y--);printf("y=%d\n",y);}A. y=0B. while 构成无限循环C. y=-1D. y=114.若运行以下程序时,输入2473↙,则程序的运行结果是( )。
main ( ){ int c;while ((c=getchar( )) ! =’\n’)switch (c-‘2’) {case 0 :case 1 : putchar (c+4) ;case 2 : putchar (c+4) ; break ;case 3 : putchar (c+3) ;default : putchar (c+2) ; break ;}printf(“\n”);}A.668977B.668966C.66778777D.668876615.下面有关for循环的正确描述是( ) 。
A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来16.对for(表达式1;;表达式3)可以理解为( )。
A.for(表达式1;0;表达式3)B.for(表达式1;表达式1;表达式3)C.for(表达式1;1;表达式3)D.for(表达式1;表达式3;表达式3)17.若i为整型变量,则以下循环执行次数是( )。
for(i=2;i==0;) printf(“%d”,i--);A.无限次B.0次C.1次D.2次18.对下Ⅰ,Ⅱ两个语句描述正确的是( )。
Ⅰ.while(1) Ⅱ.for(;;)A. 都是无限循环B.Ⅰ是无限循环,Ⅱ错误C.Ⅰ循环一次,Ⅱ错误D.以上答案都错19.下列程序段中,功能与其它程序段不同的是( )。
A.for(i=1,p=1;i<=5;i++) p*=i;B.for(i=1;i<=5;) { p=1;p*=i;i++;}C.i=1;p=1;while(i<=5) { p*=i;i++;}D.i=1;p=1;do { p*=i;i++;} while(i<=5)20.有如下程序main(){ int i, sum=0;for(i=1;i<=3;sum++) sum+=i;printf("%d\n",sum);}该程序的执行结果是( )。
A. 6B. 3C. 死循环D. 021.下面for循环语句( )。
int i,k;for (i=0, k=-1; k=1; i++, k++)printf(“***”);A.判断循环结束的条件非法B.是无限循环C.只循环一次D.一次也不循环22.执行语句for (i=1;i++<4;) ; 后变量i的值是( )。
A.3B.4C.5D.不定23.以下for循环的执行次数是( )。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A.无限循环B.循环次数不定C.4次D.3次24. 以下正确的描述是( )。
A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.goto语句只能用于退出多层循环25.下列程序段不是死循环的是( )。
A. int i=100; while(1){i=i%100+1;if(i>100)break;}B. for(;;)C. int k=0; do{++k;} while(k==0);D. int s=36;while(s);--s;26.以下程序的运行结果为( )。
main( ){ int n;for( n=1;n<=10;n++){ if( n%3==0) continue; printf(“%d”,n); }}A.12457810B.369C.12D.1234567891027.与以下程序段等价的是( )。
while(a){ if (b) continue;c;}A. while(a){ if(!b) c;}B. while(a){ if(!b) break; c;}C. while(a){ if(b) c;}D. while(a){ if(b) break; c;}28.以下的程序输出的结果是( )。
void main( ){ int i;for(i=0; i<=5 ;i++){ if( i%2) putchar('<');else continue;putchar('>'); }putchar('#'); }A. < > < > < > #B. > < > < > < #C. < > < > #D. > < > < #29.下面程序段,以下关于程序段执行情况的叙述,正确的是( )。
for(t=1;t<=100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t); }A.当x<0时整个循环结束B.x>=0时什么也不输出C.printf函数永远也不执行D.最多允许输出100个非负整数30.有以下程序段int i,n;for(i=0;i<8;i++){ n=rand()%5;switch (n){ case 1:case 3:printf("%d\n",n); break;case 2:case 4:printf("%d\n",n); continue;case 0:exit(0);}printf("%d\n",n);}以下关于程序段执行情况的叙述,正确的是( )。
A.for循环语句固定执行8次B.当产生的随机数n为4时结束循环操作C.当产生的随机数n为1和2时不做任何操作D.当产生的随机数n为0时结束程序运行二、程序填空题1.求100的阶乘100!(100!=1*2*……*100)。
#include<stdio.h>void main(){ int i;; /*定义累乘器fact并初始化为1*/for(____________ __)____________ __; /*实现累乘*/printf( ); /*输出最终结果*/}2.计算并输出1!+2!+3!+…+10!。