我想要一套关于c语言循环语句的习题,不知哪位大侠有,希望帮帮忙,救急啊!!!先谢了

Python030

我想要一套关于c语言循环语句的习题,不知哪位大侠有,希望帮帮忙,救急啊!!!先谢了,第1张

for语句格式为:

循环语句

for(表达式1表达式2表达式3)

循环语句语句:/*循环体*/

该语句执行过程如下:

①先对表达式1赋初值

②判别表达式2是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行表达式3,进入第二次循环,再判别表达式2……否则判断表达式2的值为假,不满足条件,就终止for循环,执行循环体外语句。

 while语句格式为:

while(表达式)

语句/*循环体*/

这里的表达式是循环能否继续下去的条件,而语句是循环体。只要表达式为真,则执行循环体内语句。否则终止循环,执行循环体外语句。

 do while语句格式为:

do

语句/*循环体*/

While(表达式)

程序进入do while循环后,先执行循环体内语句,然后判断表达式的真假,若为真则进行

下一次循环,否则为假则终止循环。该循环语句的特点是,表达式为假时也执行一次循环体

内语句。

1.设有程序段 int k=10while (k=0) k=k-1则下面描述中正确的是 (  )A while循环执行10次 B 循环是无限循环C 循环体语句一次也不执行D 循环体语句执行一次

2.设有以下程序段 int x=0,s=0while(!x!=0)s+=++xprintf("%d",s) 则(  )A 运行程序段后输出0 B 运行程序段后输出1 C 程序段中的控制表达式是非法的 D 程序段执行无限次

3、语句while(!E)中的表达式!E特等价于( )A、E==0 B、E!=1C、E!=0 D、E==1

4、下面程序段的执行结果是( )a=1b=2c=2while(a<b<c ) {t=aa=bb=tc--}printf("%d,%d,%d",a,b,c)A、1,2,0 B、2,1,0 C 、1,2,1 D、2,1,1

5、下面程序段的运行结果是(  )x=y=0while(x<15) y++,x+=++yprintf("%d,%d",y,x)A、20,7 B、6,12 C、20,8 D 8,20

6、下面程序段的运行结果是(   )int n=0while (n++<=2)printf("%d",n)A,2 B、3 C、4 D 有语法错误

7、设有程序段t=0while(printf("*")){t++if(t<3) break}下面描述正确的是(   )A、其中循环控制表达式与0等价B、其中循环控制表达式与’0‘等价C 、其中循环表达式是不合法的D、以上说法都不对

8、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等的数时结束循环,请选择填空。main(){int a,b,tscanf(“%d,%d”,&a,&b)while( ){if(a>b) {t=aa=bb=t}printf(“%d,%d\n”,a,b)scanf(“%d,%d”,&a,&b)}}A、!a=b B、a!=b C、a==b D、a=b

9、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。#include<stdio.h>main( ){int m=0,n=0char cwhile((__)!=’\n’){if(c>=’A’&&c<=’Z’) m++if(c>’a’&&c<=’z’) n++}printf(“%d\n”,m<n?___)}A. c==getchar() B.getchar() C.c=getchar() D.scanf(“%c”,c)A. n:m B.m:n C.m:m D.n:n

10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,Z变成B。填空#include<stdio.h>main(){char cwhile((c=getchar( ))!=’\n’){if(c>=’a’&&c<=’z’){_______if(c>=’Z’&&c<=’Z’+2)___________}printf(“%c”,c)}A.c+=2 B.c-=32 C.c=c+32+2 D.c-=30A.c=’B’ B.c=’A’ C.c-=26 D.c=c+26

11,下面程序的功能是在输入的一批正整数中求出最大者,输入0时结束,请选择填空main( ){int a,max=0scanf(“%d”,&a)while(____){if(max<a) max=ascanf(“%d”,&a)}printf(“%d”,max)}A.a==0 B.a C!a==1 D.!a

12、下面程序的运行结果是(  )main( ){int num=0while(num<=2){num++printf(“%d\n”,num)}A.1 B.1<CR>2 C.1<CR>2<CR>3 D.1<CR>2<CR>3<CR>4

13.若运行以下程序时,从键盘输入2473<CR>,则下面程序的运行结果是()#include<stdio.h>main( ){int cwhile((c=getchar( ))!=’\n’)switch(c-‘2’){case 0:case 1:putchar(c+4)case 2:putchar(c+4)breakcase 3:putchar(c+3)default:putchar(c+2)break}printf(“\n”)}A.668977 B.668966 C.66778777 D.6688766

14.C语言中while和do-while循环的主要区别是(  )A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do–while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句

15 .以下程序段()x=-1 do{x=x*x}while(!x)A.是死循环B.循环执行二次C.循环执行一次D.有语法错误

16、以下描述中正确的是( )A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。D.do-while循环中,根据情况可以省略while

17.若有以下语句int x=3do{print("%d\n",x-=2)} while(!(--x));则上面程序段()A.输入的是1 B.输出的是1和-2 C.输出的是3和0 D.死循环

18.下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环,填空。main(){long int numscanf("%ld",&num)do{if(_____) printf("%ld,num)scanf("%ld",&num)}while(______)}A.num%100/10==3 .Bnum/100%10==3 C.num%10/10==3 D.num/10%10==3A.!num B.num>0==0 C.!num==0 D.!num!=0

19.下面程序的运行结果是( )#include<stdio.h>

main( )

{int y=10

do {y--}while(--y)

printf(“%d\n”,--y)}

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

20.若运行以下程序时,从键盘输入ADescriptot<CR>(<CR>表示回车),下面程序的运行结果是

#include<stdio.h>

main( )

{char c

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’:v1+=1

default:v0+=1v2+=1}

}while(c!=’\n’)

printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2)}

A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8

C)v0=11,v1=4,v2=11 D)v0=12,v1=4,v2=12

21.下面程序的运行结果是

#include<stdio.h>

main( )

{int a=1,b=10

do

{b-=aa++}while(b--<0)

printf(“a=%d,b=%d\n”,a,b)}

a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9

22.下面有关for循环的正确描述是( )A.for循环只能用于循环次数已经确定的情况B.for 循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来

23.对for(表达式1表达式3)可理解为( )A.for(表达式1;0; 表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)

24.若i为整型变量,则以下循环执行的次数是( )for(i=2i=0) printf(“%d”,i--)A.无限次 B.0次 C.1次 D.2次

25.以下for循环的语句是( )for(x=0,y=0(y=123)&&(x<4)x++)A.是无限循环 B.循环次数不定C.4次 D.3次

26.以下不是无限循环的语句是( )A.for(y=0,x=1x>++yx=I++) I=xB.for(x++=I)C.while(1) {x++}D.for(I=10I--) sum+=I

27.以下程序段的运行结果是( )for (y=1y<10) y=((x=3*y,x+1),x-1)printf(“x=%d,y=%d”,x,y)A. x=27,y=27 B.x=12,y=13 C.x=15,y=14 D.x=y=27

28. 下面程序段的运行结果是____

for(x=3x<6x++)printf((x%2)?(“**%d”):(“##%d\n”),x)

a)**3 b)##3c)##3 d)**3##4

##4 **4 **4##5 **5

**5 ##5

29.下列程序段不是死循环的是(   )A. int I=100 while(1){I=I%100+1if(I>100)break}B. for()C. int k=0do{++k}while(k>=0)D.int s=36while(s)--s30.执行语句for(I=1I++<4)后变量I的值是( )A.3B.4 C.5 D.不定

对于8, 执行的顺序是 先判断 k<=2 无论是否成功,接下来都会执行k++, 然后如果判断成功,执行printf, 否则退出循环。

也就是执行打印时,k已经自加过了。所以是1 2 3 而不是 0 1 2

对于9, 在while后面有个分号,所以循环体什么都不执行。 当k=2的时候,判断成功,执行k++

当k为3时,判断失败,退出循环。但是k++无论循环是否执行,这个自加都会做的

于是当k=3的时候退出循环后,还会做一次自加。

于是打印出的k就是4了。