C语言(循环)单元练习

一、单项选择题   

1、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是__A____。

A. if((a>b)&&(b>c)) k=1;      B. if((a>b)||(b>c))  k=1

     else  k=0;                     else  k=0;

C. if(a<=b)  k=0;            D. if(a>b)  k=1;

    else if(b<=c)  k=1;               else  if(b>c)  k=1;

                                        else k=0;

2、C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的___B___不能丢,它表示do_while循环的结束。

  A. \n            B. “;”           C. “%”          D.  “,”

3、执行程序段: x=-1; do { x=x*x;} while(!x); 的结果是__C____。

A. 死循环                      B. 循环执行2次    

C. 循环执行一次                D. 有语法错误

4、下面程序段的输出结果是__D____。

int i,sum;

  for(i=1;i<=10;i++)sum+=sum;

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

A. 10             B. 9          C. 15                 D.不确定

5、以下叙述正确的是___C___。

A. for循环中设置for(条件)break,当条件成立时中止程序执行。

B. for循环中设置for(条件)continue,当条件成立时中止本层循环。

C. for循环中设置for(条件)break,当条件成立时中止本层循环。

D. for循环中设置for(条件)break,当条件成立时暂停本次循环。

6、下面有关for循环的正确描述是__D____。

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

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

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

D. for循环的循环体语句中,可以包含多条语句。

7、以下能正确计算1×2×3×4...×10的程序段是__C____。

A. do {i=1; s=1; s=s*i; i++; } while(i<=10);

B. do {i=1; s=0; s=s*i; i++; } while(i<=10);

C. i=1; s=1; do {s=s*i; i++; } while(i<=10);

D. i=1; s=0; do {s=s*i; i++; } while(i<=10);

8、有以下程序        B

  #include <stdio.h>

  void main()

  {   int  a=5,b=4,c=3,d=2;

      if (a>b>c)   printf("%d\n", d);

      else  if ( (c-1>=d) ==1)   printf("%d\n", d+1);

           else  printf("%d\n", d+2);   

}

执行后输出结果是__B____。

A. 2             B. 3           

C. 4               D. 编译时有错,无结果

9、以下程序段的输出结果是__D____。

int x,i;

for (i=1;i<=100;i++)

{ x=i; if (++x%2==0) if (++x%3==0) if (++x%7==0) printf("%d ",x); }

A. 39 81         B. 42 84         C. 26 68          D. 28 70

10、设有程序段: int k=10; while(k=0) k=k-1; ,则下面描述正确的是___C___。

A. while 循环执行10次          B.循环是无限循环

C. 循环体语句一次也不执行      D.循环体语句执行一次

11、有以下程序:

#include<stdio.h>

void main()  {  while(putchar(getchar())!='?'); }

当输入"china?"时,程序的执行结果是_D_____。

A. china        B. dijob          C. dijob?         D. china?

12、下面程序的运行结果是_B_____。

#include<stdio.h>

void 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=%d\n",x);   }

A. x=4           B. x=8         C. x=6            D. x=12

13、若有条件表达式(expression) ?a++:b--,则以下表达式中能完全等价于表达式(expression)的是___B___。

A. (expression==0)     B. (expression!=0)         

C. (expression==1)     D. (expression!=1)         

14、下面循环的循环次数是___D___。

int x=3; while(x=0){printf("%d\n",x); x--;}

A. 3次           B. 2次        C. 1次          D. 0次

15、设i为整型量,执行循环语句for(i=500;i>=0;i-=100);后,i值为___D___。

  A. 500         B. 0             C. 100          D. -100

16、以下_B_____为不正确的if语句。

A. if(x<y);

B. if(x!=y) scanf("%d",&x) else scanf("%d",&y);

C. if(x==y) x+=y;

D. if(x<y) {x++;y++;}

17、下面程序段运行结果是_A_____。

  int i,j,a=0;  

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

{ for(j=0;j<4;j++){if (j%2) break; a++; } a++; } printf("%d\n",a);

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

18、下面程序段的输出结果是___A___。

int i,j,k;

  for(i=2;i<6;i++,i++)

  { k=1;   for(j=i;j<6;j++)  k+=j;}

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

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

19、循环语句for(i=0,x=0;!x&&i<=5;i++);的执行次数为__B____。

A. 5次           B. 6次        C. 1次            D. 无限

20、以下描述正确的是__C____。

A. goto语句只能用于退出多层循环

B. switch语句中不能出现continue语句

C. 只能用continue语句来终止本次循环

D. 在循环中break语句不能独立出现

21、对于for(表达式;;表达式3)可理解为___B___。

A. for(表达式;0;表达式3)

B. for(表达式;1;表达式3)

C. for(表达式;表达式1;表达式3)

D. for(表达式;表达式3;表达式3)

22、以下不正确的描述是__B____。

A. break 语句不能用于循环语句和switch语句外的任何其他语句

  B. 在switch语句中使用break语句或continue语句的作用相同

C. 在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行

D. 在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环

23、下面程序段的输出结果是__D____。

int x=3;

  do{printf("%3d",x-=2);} while(!(--x));

  A. 1 2            B. 3 2            C. 2 3           D. 1 -2

24、请阅读以下程序:

#include <stdio.h>

void main ()

{ char c;   c=getchar();   

  if ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))

   printf("input character is letter\n");

  else if (c>='0'&&c<='9')

  printf("input character is digit\n");

  else

  printf("other character\n");

}

若运行时输入大写字母A,则上面程序的输出结果是__A____。

   A. input character is letter

   B. input character is digit

   C. other character;}

   D. A

25、有如下语句 int x=3; do { printf("%d\n",x-=2);} while(!(--x)); 则上面程序段___B___。

A. 输出的是1                  B. 输出的是1和-2

C. 输出的是3和0              D. 是死循环

二、判断题

1、C语言的循环语句for,while,do_while中,其中用于直接中断最内层循环的语句是break。T

2、for循环语句比while循环语句功能更强,凡是用while循环能完成的,用for循环都能实 现。T

3、while循环和do-while循环的while()后一定要有一个分号。F

4、if语句后面的表达式并不限于是关系表达式或逻辑表达式,而可以是任意表达式。if语         句中可以再嵌套if语句。T

5、一个if语句中可以嵌套一个switch语句。T

6、若a、b均为int型变量,且a=100,则以下的for循环是死循环.

    for (b=100;a!=b;++a,b++) printf("----\n"); 。F

7、if (x=y)&&(x!=0) x+=y; 语句语法是错误的。T

8、for(i=0,j=10;i<=j;i++,j--) k=i+j;执行完后,k的值为50。F

9、以下程序段的输出结果是987。

   int n=10; while (n>7) { n--;printf("%d ",n);}T

10、if(a=5) 语句;if(b) 语句;都是非法的。F

11、for循环可以在表达式3中包含使循环趋于结束的操作,但必须是一条表达式语句。F

12、while语句do-while语句无论什么情况下,二者的执行结果都一样。F

13、一个if语句中可以嵌套另一个if语句。T

14、if (x>y) 语句语法是正确的。F

15、要使for(表达式1;表达式2;表达式3){循环体}不形成死循环,表达式2一定不能为空。

F

三、填空题

1、鸡兔共有30只,脚共有90个,下面程序是计算鸡兔各有多少只。

#include<stdio.h>

void main()

{  int x,y;

for(x=1;x<=29;x++)

{  y=30-x; if (___________)printf("%d,%d\n",x,y); } }       1 x*2+y*4==90

2、下面程序的功能是从键盘输入的一组字符中分别统计出大写和小写字母的个数,当输入换行符时结束输入。

#include<stdio.h>

void main()

{  int m=0,n=0; char c;

    while ( (___________)!='\n')

{  if (c>='A' && c<='Z') m++;

 if (c>='a' && c<='z') n++; }

    printf("m=%d,n=%d\n",m,n);}                         1 c=getchar()

3、以下程序输出结果为___________。

#include<stdio.h>

void main()

{ int x,y;

   for(x=30,y=0;x>=10,y<20;x--,y++)  x/=2,y+=2;

   printf("x=%d,y=%d\n",x,y);}                          x=-1,y=21

4、下面程序使循环结束的条件是___________。

#include<stdio.h>

void main()

{ int k;

   for(k=250;i;i-=5);

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

5、若从键盘输入68,则以下程序输出的结果是___________。

  #include<stdio. h>

void main()

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

     if(a>50)  printf("%d",a);

     if(a>40)  printf("%d",a);

     if(a>30)  printf("%d",a);   }                       686868

6、#include <stdio.h>

void main()

{int p, a=5;

 if (p=a != 0 )   printf("%d\n", p);

 else   printf("%d\n", p+2);   }执行后输出结果是___________。  1

7、#include<stdio.h>

void main()

{ char ch;

    while((ch=getchar( ))!='\n')

{ if(ch>='A' && ch<='Z') ch=ch+32;

else if(ch>='a'&&ch<'z') ch=ch-32;

          printf("%c",ch);}

printf("\n"); }                             abcDEF

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

#include<stdio.h>

void main()

{ int i;

   for(i=100;i>=0;i-=10);

   printf("%d\n",i);  }                                 -10

9、以下程序运行后的输出结果是___________。

#include <stdio.h>

void main( )

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

   if  (a)  

      if ( b<0 ) c=0;

      else  c++ ;

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

  }                                             3

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

#include<stdio.h>

void main()

{ int a,i;

for( a=1,i=-1;-1<=i<1;i++) { a++; printf("%2d",a); }

printf("%2d",i);}                              -1

相关推荐

  1. C语言循环单元练习

    2024-03-14 20:26:03       18 阅读
  2. C语言(指针)单元练习

    2024-03-14 20:26:03       17 阅读
  3. c语言循环语句练习

    2024-03-14 20:26:03       37 阅读
  4. C语言(指针)单元练习

    2024-03-14 20:26:03       20 阅读
  5. C语言(数组)单元练习

    2024-03-14 20:26:03       18 阅读
  6. c语言循环题目

    2024-03-14 20:26:03       7 阅读
  7. C语言】for循环

    2024-03-14 20:26:03       10 阅读
  8. C语言】分支循环语句

    2024-03-14 20:26:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 20:26:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 20:26:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 20:26:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 20:26:03       20 阅读

热门阅读

  1. TCP网络通信-在C#/Unity中的知识点

    2024-03-14 20:26:03       22 阅读
  2. Nmap常用的一些参数

    2024-03-14 20:26:03       20 阅读
  3. linux Shell 命令行-09-redirect 重定向

    2024-03-14 20:26:03       17 阅读
  4. webpack5基础--10_处理 js 资源

    2024-03-14 20:26:03       16 阅读
  5. 如何计算视频流需要的服务器带宽

    2024-03-14 20:26:03       18 阅读
  6. 快速在Linux系统安装MySQL

    2024-03-14 20:26:03       21 阅读