循环结构习题有答案

第6章循环结构程序设计

1.以下叙述正确的是()

A、do-while语句构成的循环不能用其它语句构成的循环代替。

B、d o-while语句构成的循环只能用break语句退出。

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D、用do-while语句构成的循环,在while后的表达式为零时结束循环。

答案:D

2.以下程序的输出结果是( )

A、10,1 9,2

B、9,8 7,6

C、10,9 9,0

D、10,10 9,1

main( )

{int x=10,y=10,i;

for(i=0;x>8;y=++i)

printf("%d,%d",x--,y);

}

答案:D

注解:循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。

3.以下程序的输出结果是( )

A、2 0

B、3 1

C、3 2 1

D、2 1 0

main( )

{ int n=4;

while(n--) printf("%d ",--n);

}

答案:A

4.以下程序的输出结果是( )

A、#*#*#

B、#####

C、*****

D、*#*#*

main( )

{ int i;

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

{ if(i%2) {printf("#");continue;}

printf("*");

}

printf("\n");

}

答案:A

注解:循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。

5.以下程序的输出结果是( )

A、编译不通过,无输出

B、aceg

C、acegi

D、abcdefghi

main( )

{ int i;

for(i='A';i<'I';i++,i++) printf("%c",i+32);

printf(" \n");

}

答案:B

注解:循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。

6.以下循环体的执行次数是()

A、3

B、2

C、1

D、0

main( )

{ int i,j;

for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);

}

答案:C

注解:循环执行过程如下:(1)i=0,j=1时,i<=j+1条件成立,执行循环体一次;(2)i+=2, j--,则i=2,j=0,i<=j+1条件不成立,循环结束,所以循环次数为1次。

7.以下程序段的执行结果是()

A、a=12 y=12

B、a=12 y=12

a=14 y=16 a=16 y=28

a=16 y=20 a=18 y=24

C、a=12 y=12

D、a=12 y=12

a=14 y=26 a=14 y=44

int a,y;

a=10;y=0;

do

{ a+=2;y+=a;

printf("a=%d y=%d\n",a,y);

if(y>20) break;

} while(a=14);

答案:C

注解:程序段的执行过程如下:进入循环,执行循环体,输出a=12 y=12,判断if语句的条件y>20,不成立,循环的条件是赋值表达式,一直为真;再次进入循环,执行循环体,输出a=14 y=26,判断if语句的条件y>20,条件成立,则执行break;语句,跳出整个循环的执行。

8.有如下程序

main( )

{ int i,sum;

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

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

}

该程序的执行结果是()

A、6

B、3

C、死循环

D、0

答案:C

注解:在for循环中,循环终止的条件是i<=3,而i的初值是1,在循环体中并没有改变i的值,所以是死循环。

9.有如下程序

main( )

{ int x=23;

do

{ printf("%d",x--);}while(!x);}

该程序的执行结果是()

A、321

B、23

C、不输出任何内容

D、陷入死循环

答案:B

注解:对do-while循环,首先执行循环体,输出23,然后再判断条件,执行一次循环后x的值为22,!x的值为0,条件为假,退出循环的执行。

10.有如下程序

main( )

{ int n=9;

while(n>6) {n--;printf("%d",n);}

}

该程序段的输出结果是()

A、987

B、876

C、8765

D、9876

答案:B

注解:循环执行的条件是n>6,n的初值是9,执行一次循环体,n的值自减1,输出自减后的值,循环体执行三次后,n的值减为6时,条件不满足,退出循环的执行,所以输出876。

11.有以下程序段

int k=0;

while(k=1) k++;

while 循环执行的次数是()

A、无限次

B、有语法错,不能执行

C、一次也不执行

D、执行1次

答案:A

注解:while循环的条件是赋值表达式x=1,此表达式的值恒为1,则此循环是一个死循环,所以执行的次数是无限次。

12.以下程序执行后sum的值是()

A、15

B、14

C、不确定

D、0

min( )

{ int i,sum;

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

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

}

答案:C

注解:因为变量sum没有初值,所以它的初值是不确定的,则最后它的值是不确定的。

13.有以下程序段

int x=3;

do

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

其输出结果是()

A、1

B、3 0

C、1 –2

D、死循环

答案:C

注解:do-while循环体先执行第一次,输出表达式x-=2的值为1,x 的值减为1,然后判断条件!(--x)为真,则第二次执行循环体,输出表达式x-=2的值为-1,x的值减为-1,再判断条件!(--x)为假,则终止循环执行。

14.t为int类型,进人下面的循环之前,t的值为0()

while( t=l )

{ ……}

则以下叙述中正确的是

A、循环控制表达式的值为0

B、循环控制表达式的值为1

C、循环控制表达式不合

D、以上说法都不对

答案:B

注解:赋值表达式的取值为1,则循环的控制表达式的值为1。

15.以下循环中,while循环的次数是()

main( )

{int i=0;

while(i<10)

{if (i<1) continue;

if(i==5) break;

i++;

}

……

}

A、1

B、10

C、6

D、死循环,不能确定次数

答案:D

注解:while循环的退出条件是i<1或i==5,第一次条件i<10满足,执行循环体中的第一个if语句,判断条件i<1成立,则执行continue,退出本次循环的执行,第二个if语句和i自增的语句并不执行,则i的值一直保留0不变,所以循环一直做下去。

16.以下程序的输出结果是()

main( )

{int a=0,j;

for(j=0;j<4;j++)

{ switch( j )

{ case 0:

case 3:a+=2;

case 1:

case 2:a+=3;

default:a+=5;

}

}

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

}

A、36

B、13

C、10

D、20

答案:A

注解:循环执行4次,执行过程是:(1)j=0时,执行开关选择语句,因为没有break,所以每一个case子句后的语句都要执行,a+=2,a+=3,a+=5,则a=10;(2)j=1时,类似执行case 1后的每一个case子句,a+=3,a=5,a=18;(3)j=2时,执行a+=3,a+=5,a=26;(4)j=3时,执行case 3后的每一个case子句,a+=2,a+=3,a+=5,则a=36。

17.以下程序的输出结果是()

#include

main( )

{int i=0,a=0;

while(i<20)

{ for(;;)

{if((i%10)==0) break;

else i--;

}

i+=11;a+=i;

}

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

}

A、21

B、32

C、33

D、11

答案:B

注解:二重循环执行时,先执行外层while循环,条件i<20成立,执行内层循环,判断if语句的条件(i%10)==0成立,则退出内层循环的执行,i=11,a=11;再判断外层循环的条件i<20成立,执行内层循环,if语句的条件(i%10)==0不成立,执行else子句,i=10,继续执行内层循环,条件(i%10)==0成立,退出内层循环的执行,i=21,a=32,外层循环的条件不成立,退出整个外层循环的执行。

填空题

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

main( )

{int s,i;

for(s=0,i=1;i<3;i++,s+=i) ;

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

}

答案:

注解:循环执行过程:第一次变量i=1,条件满足,循环体为空语句,执行for循环的第三个表达式,i=2,s=1;再次判断条件满足,执行i++,s+=i,则i=3,s=3,再判断条件,不成立,则退出循环,输出s的值为3。

2.设有以下程序:

main( )

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);}

}

程序运行后,如果从键盘上输入1298;则输出结果为__________________

答案:8921

注解:变量n2的值为1298,while循环初始条件成立,n1=n2%10,则n1=8,然后n2=n2/10,则n2=129,输出n1的值8,再次判断条件n2!=0成立,执行循环体,n1=n2%10,则n1=9,n2=n2/10,则n2=12,输出n1的值9,循环条件成立,执行循环体,n1=2,n2=1,输出n1的值2,再判断循环条件成立,执行循环体,n1=1,n2=0,输出n1的值1,再判断条件不成立,退出循环。则输出的值为8921,即将所输入的数据倒序输出。3.要使以下程序段输出10个整数,请填入一个整数。

for(i=0;i<=___________ ;printf("%d\n",i+=2));

答案:18

注解:填空处要填入的是循环退出条件,要输出10个整数,即循环要执行10次,从初值0开始,循环控制变量i一次变化为2,从输出2开始,一直输出数值20,i<=18即可保证循环执行10次。

4.若输入字符串:abcde<回车>,则以下while循环体将执行____________ 次。

While((ch=getchar( ))== 'e') printf("*");

答案:0

注解:循环执行条件为输出的字符等于e,在输出字符串abcde后,第一个字符是a,则条件不成立,循环一次也不做。

上机改错题

1.给定程序中函数fun的功能是:将字符串tt中的小写字母都改为对应的大写字母,其他字母不变。例:若输入“Ab,cd”,则输出“ABCD”,请改正函数fun中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

程序:

#include

#include

char fun(char tt[ ] )

{ int I;

for(I=0;tt[I];I++)

if(('a'<=tt[I])||(tt[I]<= 'z')) tt[I]-=32;

return (tt);

}

main( )

{int I;

char tt[20];

clrscr( );

printf("\nPlease enter a string:");

gets(tt);

printf("\nThe result string is:\n%s",fun(tt));

puts(tt);

}

答案:将if(('a'<=tt[I])||(tt[I]<= ' z'))改为if(('a'<=tt[I])&&(tt[I]<= ' z'))

注解:要将小写字母都改为对应的大写字母,其他字母不变,则在fun函数中,对数组tt中的字符进行判断,若是小写字母,则进行转换,否则什么也不做,表示字符是小写字母的表达式是

('a'<=tt[I])&&(tt[I]<= ' z'),即字符是介于小写字母'a'与'z'之间。

2.给定程序中函数fun的功能是:计算并输出M以内最大的10个素数之和,M由主函数传给fun函数。若M 的值为100,则函数的值为732。请改正fun函数中的错误,使程序能输出正确的结果。

程序:

#include

#include

int fun(int M)

{int sum=0,n=0,j,flag;

while((M>=2) &&(n<10)

{flag=1;

for(j=2;j<=M/2;j++)

if(M%j==0) {flag=0; break}

if(flag)

{sum+=M; n++;}

M--;

}

return sum;

}

main( )

{clrscr( );

printf("%d\n",fun(100));

}

答案:将while((M>=2) &&(n<0)改为while((M>=2) &&(n<0))

将break改为break;

注解:本题错误很简单,只是语法错误,没有算法,结构方面的错误。在条件表达式的两边必须加上括号,语句结束要有分号。程序结构是:在函数中用while循环来确定10个素数,变量n来标记数的个数,for循环是判断M是否为素数,用变量flag标志,若M是素数,则将M加到sum中,同时n增加1,M减少1。

(注:可编辑下载,若有不当之处,请指正,谢谢!)

循环练习题及答案

1,任意输入一个整数(小于10位),求它的位数 import public class BitNum { public static void main(String[] args){ Scanner input = new Scanner(System.in); int count = 0; System.out.print("请输入一个整数(小于10位):"); int num = input.nextInt(); if while(num != 0){ count++; num /= 10; } System.out.println("它是个" + count + "位的数。"); }else{ System.out.println("输入有误!"); } } } 2,本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少? public class Principal { public static void main(String[]args){ double money = 10000; for(int i = 0; i < 5; i++){ money *= 1+0.003; } System.out.println("5年后,获得的本金是" +(int) money + "元。"); } } 3,计算1000以内所有不能被7整除的整数之和。 public class NotDiviBySevenSum { public static void main(String[]args){ int sum = 0; for (int i = 1; i < 1000; i++){ //1000以内的整数 if (i % 7 != 0){ //对7取余 sum += i; //余数不为0 则相加 } }

循环结构程序设计习题答案

循环结构程序设计习题答案 一、单选题。 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=I%100+1; if(I>100) break;

循环结构习题有答案

第6章循环结构程序设计 1.以下叙述正确的是() A、do-while语句构成的循环不能用其它语句构成的循环代替。 B、d o-while语句构成的循环只能用break语句退出。 C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。 D、用do-while语句构成的循环,在while后的表达式为零时结束循环。 答案:D 2.以下程序的输出结果是( ) A、10,1 9,2 B、9,8 7,6 C、10,9 9,0 D、10,10 9,1 main( ) {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d,%d",x--,y); } 答案:D 注解:循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。 3.以下程序的输出结果是( ) A、2 0 B、3 1 C、3 2 1 D、2 1 0 main( ) { int n=4; while(n--) printf("%d ",--n); } 答案:A 4.以下程序的输出结果是( ) A、#*#*# B、##### C、***** D、*#*#* main( ) { int i; for(i=1;i<6;i++) { if(i%2) {printf("#");continue;} printf("*"); } printf("\n"); } 答案:A 注解:循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。 5.以下程序的输出结果是( ) A、编译不通过,无输出 B、aceg C、acegi D、abcdefghi main( ) { int i;

第4章--循环结构 - 参考答案

1、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for (j=0;j<4;j++){...} A) 20 B) 25 C) 24 D) 30 A 2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 for(i=0,j=10;i<=j;i++,j--) k=i+j; A) 12 B) 10 C) 11 D) 9 B 3、当执行以下程序段时 x=-1; do { x=x*x;} while( !x); A) 循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 A 4、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while( (ch=getchar())!='e' ) printf("*"); A) 5 B) 4 C) 6 D) 1 B 5、有以下程序段 int k=0; while (k=1) k++; while循环执行的次数是 A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行一次 A 6、语句while(!e);中的条件!e 等价于( )。 A) e==0 B) e!=1 C) e!=0 D) ~e A 7、以下for循环是( )。 for(x=0,y=0;(y!=123) && (x<4);x++) A) 无限循环B) 循环次数不定 C) 执行4次D) 执行3次 C 8、C语言中while 和do-while 循环的主要区别是( )。 A) do-while的循环体至少无条件执行一次 B) while 的循环控制条件比do-while 的循环控制条件严格 C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句 A 9、以下叙述正确的是( )。 A) continue语句的作用是结束整个循环的执行 B) 只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 B 10、对下面程序段,描述正确的是( )。 for(t=1;t<=100;t++) { scanf("%d",&x); if (x<0) continue; printf("%d\n",t); } A) 当x<0时,整个循环结束 B) 当x>=0时,什么也不输出 C) printf函数永远也不执行 D) 最多允许输出100个非负整数 D 11、在下列选项中,没有构成死循环的程序段是 A) int i=100; while (1) { i=i%100+1; if (i>100) break; } B) for( ; ; ); C) int k=1000; do {++k;} while (k>=1000) ; D) int s=36; while (s) --s; D 12、以下程序的输出结果是 main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d\n",a); } A) 101 B) 6 C) 4 D) 3 D 13、以下程序的输出结果是( )。 #include

第五章循环结构习题与答案

第五章循环结构 一、选择题 1)下面有关for循环的正确描述是< ) A)for循环只能用于循环次数已经确定的情况 B)for循环是先执行循环体语句,后判断表达式 C)在for循环中,不能用break语句跳出循环体 D)for循环的循环体中,可以包含多条语句,但必须用花括号括起来 2)对表达式for<表达式1。。表达式3)可理解为 A)for<表达式1。0。表达式3) B)for<表达式1。1。表达式3) C)for<表达式1。表达式1。表达式3) D)for<表达式1。表达式3。表达式3) 3)以下描述中正确的是< ) A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B)do-while循环由do开始,用while结束,在while<表达式)后面不能写分号 C)在do-while循环体中,是先执行一次循环,再进行判断 D)do-while循环中,根据情况可以省略while

4)以下程序段的描述,正确的是< ) x=-1。 do {x=x*x。}while(!x>。 A)是死循环B)循环执行两次 C)循环执行一次D)有语法错误 5)设有以下程序段 int x=0,s=0。 while(!x!=0>s+=++x。 printf(″%d″,s>。 则< ) A)运行程序段后输出0B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 6)有如下程序 #include void main(> { int n=9。 while(n>6>{n--。printf(″%d″,n>。} } 该程序的输出结果是< ) A)987 B)876

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案 1、循环语句的三要素分别是、、; 2、for语句括号内的3个表达式的作用分别 是、、; 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整 地,只有当时,才结束整个循环; 4、在循环结构中,break语句的作用是;continue语句的作用是; 5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次; 6、下面程序段的执行次数: int a=0; whilea=0 { printf"good\n"; a--; } 7、下面程序段的执行次数: int a=0; whilea==0 { printf"good\n"; a--; } 8、下面程序段的执行次数: int a=1; whilea=1 { printf"good\n"; a++; } 9、下面程序段的执行次数: int a=1; whilea==1 { printf"good\n"; a++; } 10、下列程序段的运行结果是; fori=5;i>=0;i-- printf“%d “,i; 11、下列程序段的运行结果是; forn=1;n<20;n=n+3 printf“%d “,n; 12、下列程序段的运行结果是; for ch='a' ;ch<='e' ;ch++ printf“%d“,ch-97;

13、下列程序段的运行结果是; fori=1,j=5 ; i100 break; } C、int a=0; D、int x=21; do whilex { ++a; --x; }whilea>=0; 三、阅读程序,写出程序运行结果; 1、include"stdio.h" main { int i=0,sum=1; do { sum+=i; i++; }whilei<5; printf"%d\n",sum; } 程序运行结果: 2、 include"stdio.h" main { int a,b;

C语言循环结构练习题带答案

第5章循环结构程序设计 练习题 1. 单项选择题 (1)语句while (!e);中的条件!e等价于 A 。 A. e==0 B. e!=1 C. e!=0 D. ~e (2)下面有关for循环的正确描述是 D 。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判定表达式 C. 在for循环中,不能用break语句跳出循环体 D. for循环体语句中,可以包含多条语句,但要用花括号括起来 (3)C语言中 D 。 A. 不能使用do-while语句构成的循环 B. do-while语句构成的循环必须用break语句才能退出 C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环 (4)C语言中while和do-while循环的主要区别是 A 。 A. do-while的循环体至少无条件执行一次 B. while的循环控制条件比do-while的循环控制条件严格 C. do-while允许从外部转到循环体内 D. do-while的循环体不能是复合语句 (5)以下程序段 C 。

int x=-1; do { x=x*x; } while (!x); A. 是死循环 B. 循环执行二次 C. 循环执行一次 D. 有语法错误(6)下列语句段中不是死循环的是__C__。 A. i=100; while (1) { i=i%100+1; if (i==20) break; } B. for (i=1;;i++) sum=sum+1; C. k=0; do { ++k; } while (k<=0); D. s=3379; while (s++%2+3%2) s++;

最新2.2.3循环结构练习题(含答案)

2.2.3循环结构练习 题(含答案) ------------------------------------------作者xxxx ------------------------------------------日期xxxx

必修三2。2.3《循环结构》练习题 基础训练 一、选择题 1.以下说法不正确的是( ) A.顺序结构是由若干个依次执行的处理步骤组成的,每一个算法都离不开顺序结构 B.循环结构是在一些算法中从某处开始按照一定的条件,反复执行某些处理步骤,故循环结构一定包含选择结构 C.循环结构不一定包含选择结构 D.用算法框图表示的算法更形象、直观,容易理解 2.框图(如下图)中的循环体是( ) A.A B.B C.C D.D 3.执行如图所示的程序框图,则输出的S的值是( )

A.4ﻩB.错误! C。错误! D.-1 4.执行如图所示的程序框图,输出的S值为( ) A.2 B.4 C.8ﻩD.16 5.(2014·安徽理,3)如图所示,程序框图(算法流程图)的输出结果是()

A.34ﻩB.55 C.78ﻩD.89 6.如果执行下边的程序框图,输入正整数N(N≥2)和实数a1,a2,…,aN,输出A,B,则( ) A.A+B为a1,a2,…,aN的和 B。错误!为a1,a2,…,a N的算术平均数 C.A和B分别是a1,a2,…,aN中最大的数和最小的数 D.A和B分别是a1,a2,…,aN中最小的数和最大的数 二、填空题 7.(2014·江苏,3)下图是一个算法流程图,则输出的n的值是________. 8.如图所示,程序框图(算法流程图)的输出结果是________.

第四章循环结构习题及课后题答案

习题答案及教程答案 习题答案 第四章循环结构 选择题: 1.答案:B ①N的值为10,n>7为真,执行循环体,n的值减1后为9,输出n的值9 ②N的值为9,n>7为真,执行循环体,n的值减1后为8,输出n的值8 ③N的值为8,n>7为真,执行循环体,n的值减1后为7,输出n的值7 ④N的值为7,n>7为假,结束循环。 2.答案:A k的值为5,进入循环,(--k)表达式的值为4(真),同时k的值改变为4,输出表达式k-=3的值1,同时k的值为1。k为1,表达式(—k)的值为0, 结束循环。 3.答案:A 1.X=0,y=5,z=3,(z>0&&x<4)值为真,进入循环体,y值为4,z值为2, x值 为1 2.(z>0&&x<4)值为真,进入循环体, y值为3,z值为1, x值为2 3.(z>0&&x<4)值为真,进入循环体, y值为2,z值为0, x值为3

4.(z>0&&x<4)值为假,结束循环。 5.输出x,y,z的值3,2,0 4.答案:D 分析: 当K的值为3时,只执行case 3后面的语句n+=k,n的值为3; 当k的值为2时,先执行case 2后面的语句,但没有break,所以不会退出,继续执行case 3后面的语句n+=k,n的值为5; 当k的值为1时,先执行case 1后面的语句n+=k,n的值为6,先执行case 2后面的语句(没有),继续执行case 3后面的语句n+=k,n的值为7。输出n的值7。 5.答案:B 在循环体中有“s+=1;”s的初始值为0,要让s的值等于2必须是循环体执行两遍。当循环提执行两遍后a的值等于-3,所以在n=-3的时候循环体执行两遍后条件表达试(a!=0)为假,会退出循环。 6.答案:A 分析: t值为1,s的值为0。从键盘中输入-3后,n的值为-3.先执行循环体。 执行s=s+t;s的值为1,执行t=t-2;t的值为-1.再判断表达式的值 t!=n为真,再次执行循环体。执行s=s+t;s的值为0,执行t=t-2;t的值为-3.再判断表达式的值

C语言程序设计习题集第4章 循环结构(答案)

第4章循环结构 一、选择题 1、有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A) A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次 2、t为int类型,进入下面的循环之前,t的值为0 while( t=1) { …… } 则以下叙述中正确的是( B) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3、在C程序中,与while(m)中表达式m完全等价的是(B ) A) m==0 B) m!=0 C) m==1 D) m!=1 4、有以下程序,程序运行后的输出结果是(C )。 main() {int i=1,sum=0; while(i<=4) { sum=sum+i; i=i+1; } printf(“%d\n”,sum);} A)4 B)5 C)10 D)死循环 5、有以下程序,程序运行后的输出结果是(D )。 main() { int i=1,sum=0; while(i<=4) sum=sum+i; i=i+1; printf(“%d\n”,sum); } A)4 B)5 C)10 D)死循环 6、有如下程序 main(){ int n=9; while(n>6){n--;printf(“%d”,n);} } 该程序段的输出结果是(B) A) 987 B) 876 C) 8765 D) 9876

7、以下程序的输出结果是( B ) main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 8、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。main() {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 9、执行以下程序段时 x=-1; do { x=x*x; } while(! x); 则下面描述正确的是(A ) A) 循环体将执行一次B) 循环体将执行两次 C) 循环体将执行无限次D) 系统将提示有语法错误 10、有以下程序段其输出结果是(C ) int x=3; do { printf("%d",x-=2); } while (!(--x)); A) 1 B) 3 0 C) 1 -2D) 死循环 11、有如下程序 main(){ int x=23; do {

C++循环结构23道题(含答案)

C++循环结构23道题(含答案) 题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出 循环01:最大数 写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。 输入39 28 5 63 18 27 0 输出63 测试: 输入153 26 963 28 75 90 156 0 输出963 #include using namespace std; int main() { inti,max=0; cin>>i; while(i!=0) { if(i>max) max=i; cin>>i; } cout< return 0; } 循环02:素数 输入正数n,判断n是否为素数。若为素数则输出1,否则输出0。(提示:素数是指只可以被1和其本身整除的正数(1除外))

输入10输出0 输入7输出1 测试: 输入9输出0 #include using namespace std; int main() { intn,i,d; cin>>n; for(i=2;i {d=n%i; if(n%i==0) break; } if(n==i) cout<<"1"< else cout<<"0"< return 0; } 循环03:数列求和 输入一个正整数n,计算前n项之和:1+1/4+1/7+1/10..+1/(3*n-2)。 输入5输出1.56978 输入4输出1.49286 #include using namespace std; int main() {

第6章循环结构程序设计习题及答案

第6章循环结构程序设计 6-1.比较while语句、do–while语句和for语句的异同。 答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。 (2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。 (3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环. (4)一般而言,三种循环语句可等价实现. 6-2 仔细阅读下面的程序,指出程序的运行结果. #include void main() { int i; for(i=0;++i;i<5) { if(i==3) {printf("%d\n",++i); break; } printf("%d\n",++i); } } 答:2 4 思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误?当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何? 6-3 仔细阅读下面的语的程序,指出程序的运行结果。 #include"stdio.h" void main()

{ int i, a=0; for(i=1;i<=5;i++) {do {i++; a++; } while(i<3); } i++; printf("a=%d,i=%d",a,i); } 答:a=3,i=7 思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗? 6-4编写程序,用1000个单词”computer”填充屏幕,每行60个 . 解:#include void main() { int i; for(i=1;i<=1000;i++) { printf("computer."); if(i%60==0)printf("\n"); } } 思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么?没有此语句将会是什么状况? 6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。 解: #include void main() { char c; int d=0,s=0;

C 循环结构23道题[含答案解析]

题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出 循环01:最大数 写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。 输入39 28 5 63 18 27 0 输出63 测试: 输入153 26 963 28 75 90 156 0 输出963 #include using namespace std; int main() { int i,max=0; cin>>i; while(i!=0) { if(i>max) max=i; cin>>i; } cout< using namespace std; int main() { int n,i,d; cin>>n; for(i=2;i

if(n==i) cout<<"1"< using namespace std; int main() { int i,n; double s=0; cin>>n; for(i=1;i<=n;i++) s+=1.0/(3*i-2); cout< using namespace std; int main() { int n,d=0; cin>>n; while(n>0) { d++;

相关主题
相关文档
最新文档