C语言(循环)单元练习二

时间:2024-03-14 14:27:39

一、单项选择题  

1.  以下程序的输出结果是______。

#include<stdio.h>  

void main()

  {  int num=0;    while(num<=2) { num++; printf("%d",num); }  }

A. 2           B. 1             C. 123           D. 12    

参考标准答案 :C

  

2.  两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是______。

#include <stdio.h>

void main()

{  int x;     scanf("%d",&x);

     if(x>5)printf("%d",x);

     else printf("%d\n",x--);    

}

A. 7和5       B. 6和3    C. 7和4      D. 6和4

参考标准答案 : D

3.  以下描述中正确的是______。

A. 由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B. do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。

C. 在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。

D. do-while循环中,根据情况可以省略while。

                        参考标准答案 : C

4. 下面程序段的输出结果是______。

int i=10;

  while(i>7) { i--;   printf(" %d",i);  }

A. 10 9 8          B. 9 8 7      C. 10 9 8 7            D. 8 9 10

                        参考标准答案 :B

5. 若i为整型变量,则以下循环执行的次数是______。

  for(i=2;i==0;) printf("%d",i--);

A. 无限次      B. 0次          C. 1次          D. 2次

                        参考标准答案 : B

6. 执行下面程序段后,i值是______。

int i=0;   do {++i; if(i%2!=0);}while(i<=100);

  A. 101            B. 100         C. 99              D. 98

                        参考标准答案 : A

7. 若变量都已正确说明,则以下程序段输出为______。

int a=1,b=2,c,d;

if (a==b)  c=d=a;

else      c=b;

d=b;  

printf("c=%d,d=%d",c,d);

A. c=1,d=1   B. c=1,d=2 C. c=2,d=1 D. c=2,d=2

                    参考标准答案 : D

8. 以下程序输出结果是______。

#include <stdio.h>

void main ( )

{  int m=5;

if (m++>5) printf("%d\n",m);

else printf("%d\n",m--);   }

A. 7        B. 6        C. 5      D. 4

                        参考标准答案: B

9. 在C语言中______。

A. 不能使用do_while语句构成的循环

  B. do_while语句构成的循环必须用break语句才能退出

  C. do_while语句构成的循环,当while语句中的表达式为非0时结束循环

  D. do_while语句构成的循环,当while语句中的表达式为0时结束循环

                        参考标准答案案: D

10. 在下列选项中,没有构成死循环的程序段是______。

A. int i=100; while (1) {i=i%100+1; if(i>100)break;}

B. for(;;);

C. int k=1000; do{--k} while (k)

D. int s=36; while(s>=0);++s;

                        参考标准答案: C

11. 以下叙述正确的是______。

A. 可以把define和if定义为用户标识符

B. 可以把define定义为用户标识符,但不能把if定义为用户标识符

C. 可以把if定义为用户标识符,但不能把define定义为用户标识符

D. define和if都不能定义为用户标识符

                        参考标准答案: B

12. 下面有关for循环的正确描述是______。

A. for循环只能用于循环次数已经确定的情况

B. for循环是先执行循环体语句,后判定表达式

C. 在for循环中,不能用break语句跳出循环体

D. for循环体语句中,可以包含多条语句,但要用花括号括起来        参考标准答案: A

13.   下面说法中正确的是______。

A.编程时,应该尽量控制嵌套循环的重数。

B.编程时,变量名应尽可能的简短。

C.编程时,应多用goto语句,以增强程序的灵活性。

D.编程时,要尽可能的简洁而新颖,可理解性是第二位的。

                        参考标准答案: A

 14.   以下程序的输出结果是______。

# include <stdio.h>

void main()

{   int i=0, j=0, k=6;

if ((++i>0)||(++j>0))   k++;

printf("%d, %d, %d\n", i, j, k);   

}

A. 0, 0, 6      B. 1, 0, 7      C. 1, 1, 7   D. 0, 1, 7

                         参考标准答案  B

  15.   C语言的for语句中的表达式可以部分或全部省略,但两个______不可省略。但当三个表达式均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。

A. “<”          B. “++”         C. “;”           D. “,”

                        参考标准答案  C

   16.    以下程序段中不能根据x值正确计算出y值的是______。

A. if(x>0) y=1;                 B. y=0;

else  if(x==0) y=0;   if(x>0) y=1;

    else y=-1;                  else  if(x<0) y=-1 ;

C. y=0;                      D. if(x>=0)

if(x>=0);                          if(x>0) y=1;

if(x>0) y=1 ;                       else y=0;

else y=-1;                       else y=-1;

                         参考标准答案  C

   17.    设有程序段: int x=0,s=0; while(!x!=0) s+=++x; printf("%d",s); ,则运行程序段后______。

A.输出0                        B.输出1

C.控制表达式是非法的           D.执行无限次

                         参考标准答案  B

  18.  以下的for循环,______。for(x=0,y=0;(y!=123)&&(x<4);x++);

A.执行3次                    B.执行4次

C.循环次数不定                D.是无限循环

                         参考标准答案  B

 19.请阅读以下程序:

  #include<stdio. h>

  void main()

  {  float  a,b;   scanf("%f",&a);

     if (a<10.0) b=1.0/a;

     else  if((a<0.5)&&(a!=2.0))b= 1.0/(a十2.0);

          else  if(a<10.0)  b= 1.0/a ;

               else  b=10.0;

     printf("%f\n",b);   

}     

若运行时输入2.0(回车),则上面程序的输出结果是______。

A. 0.000000   B. 0.500000 C. 1. 000000 D. 0.250000

                         参考标准答案  B

  20.   语句while (!e);中的条件!e等价于______。

  A. e==0;         B. e!=1          C. e!=0           D. ~e

              参考标准答案  A

 21.   以下程序输出结果为______。

#include <stdio.h>

void main()

{  int i,b,k=0;

   for(i=1;i<=5;i++) { b=i%2; while (b-->=0) k++;} printf("%d,%d\n",k,b); }

A. 3,-1          B. 8,-1          C. 3,0            D. 8,-2

                        参考标准答案  D

 22.  下面程序的运行结果是______。

int y=10; do { y--;} while(--y); printf("%d\n",y--);

  A. -1           B. 1             C. 8             D. 0

                        参考标准答案 D

 23.   有如下程序段运行结束后x的值为______。

int x,y;

  for(x=1,y=1;x<=100;x++)

  { if (y>=20) break; if (y%3==1) { y+=3;continue;} y-=5; }

  printf("%d\n",x);

  A. 9             B. 8           C. 7              D. 6

                      参考标准答案  B

   24.循环语句for(i=100;i;i-=30); 的执行次数为______。

A. 3次           B. 4次        C. 5次            D. 0次

                        参考标准答案  B

 25.   设有程序段:int n=0; while(n++<3); printf("%d",n);,则运行结果是______。

A. 2            B. 3            C. 4             D. 以上都不对

                        参考标准答案  C

二、判断题  

  1.    do-while语句构成的循环只能用break语句退出。

                         参考标准答案 :错

 2.   C语言的While循环语句中,While后一对圆括号中的表达式的值决定了循环体是否进行,因此,进入While循环后,一定要有能使表达式的值变为0的操作。

                         参考标准答案 :对

 3.   C语言程序的三种基本结构是嵌套结构、递归结构、顺序结构。

                         参考标准答案:错

 4.    if (x!=y)  scanf("%d",&x);else  scanf("%d",&y); 语句语法是错误的。

                        参考标准答案 :错

 5.    if语句执行时,首先计算紧跟在if后面一对圆括号中的表达式的值,如果表达式的值为非零("真"),则执行if后的"语句",然后去执行if

语句后的下一个语句。

                         参考标准答案 :对

 6.    语句int x=3;do { printf("%d\n",x-=2);} while(!(--x)); 输出的是1和-2。

                         参考标准答案: 对

  7.    语句 x=3; do {printf("%2d",x--);} while(!x); 的执行结果是3。

                        参考标准答案 : 对

 8.    执行完下面程序段后,k的值为0。

int i,j,k; for(i=0,j=10;i<=j;i++,j--) k=j-i;

                         参考标准答案 : 对

 9.    if (x>0) printf ( "%f ",-x )语句语法是正确的。

                         参考标准答案 :错

 10.     for后的一对圆括号中,可以出现各种形式的与循环控制无关的表达式。

                         参考标准答案 :对

 11.    用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。

                         参考标准答案 : 错

  12.   若i为整型变量,则以下循环 i=0; while(i=0)i++;一次也不执行。

                         参考标准答案 : 对

  13.     各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

                         参考标准答案 :对

  14.     while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。

                        参考标准答案 : 对

  15.    for循环中,如果表达式2为空,则该循环一定是死循环。

                        参考标准答案 : 错

三、填空题   

1.  下面程序的运行结果是___________。

#include<stdio.h>

void main()

{ int a=0,i=0;

   while(a<=6){++i;a+=i;}

printf("%d\n",a);  }

                        参考标准答案: 10

2.  有以下程序

#include<stdio. h>

void main( )

  {  int n=0,m=1,x=2;

     if(!n)   x-=1;

     if(m)   x-=2;

     if(x)   x-=3;  

     printf("%d\n",x);  }执行后输出结果是___________。

                        参考标准答案:-4

3.  运行以下程序后,如果从键盘上输入student#<回车>,则输出结果为___________。

#include<stdio.h>

void main()

{ int v1=0,v2=0;   char ch;

   while((ch=getchar( ))!='#')

   switch(ch){case 'd':case 't':default: v1++;case 'a': v2++;}

   printf("%d,%d\n",v1,v2);}

                        参考标准答案 : 7,7

4.  若输入整数12345,以下程序的输出结果为___________。

#include<stdio.h>

void main()

{ int x,y;   scanf("%d",&x);

do{y=x%10;printf("%d",y);x/=10;} while(x);}

                        参考标准答案 : 54321

5.   

以下程序输出的结果是___________。

#include<stdio.h>

void main()

{ int i,j;

   for(j=10;j<11;j++){for(i=9;i==j-1;i++)printf("%d",j);}}

                         参考标准答案 :10

6.   

以下程序的运行结果是___________。

#include <stdio.h>

void main()

{int a,b,c; int s,w=0,t=0; a=-1;b=3;c=3;

 if(c>0) s=a+b;

 if(a<=0) {if(b>0) if(c<=0)w=a-b; }

 else  if(c>0)w=a-b;

       else t=c; printf("%d,%d,%d\n",s,w,t); }

                          参考标准答案 :2,0,0

 7.   

下面程序的运行结果是___________。

#include<stdio.h>

void main()

{ int a=0,i=0;

   do{++i;a+=i;} while(a<=6);

   printf("%d\n",a);  }

                         参考标准答案 :10

 8.     

以下程序完成的功能是___________。

#include <stdio.h>

void main( )

 { int  shu;

   printf("请输入一个整数%%d:\n");

   scanf("%d", &shu );

   if  ( shu < 0 )   

      shu = -shu;

   printf(" %d\n", shu );

  }

                         参考标准答案 :输出从键盘上输入数据的绝对值

  9.    

下面是计算n!的值的程序。

#include<stdio.h>

void main()

{ int i,s,n;   s=1;   scanf("%d",&n);

   for(i=1;i<=n;i++)___________;

   printf("s=%d\n",s);  }

                        参考标准答案 : s=s*i

 10.    

以下程序输出结果为___________。

#include"stdio.h"

void main()

  {  int i;

for(i=0;i<10;i++);

printf("%d",i); }

                        参考标准答案 : 10