循环结构习题有答案
第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
循环结构程序设计课后习题及答案
循环结构程序设计习题及答案 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 ; i
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<
输入10输出0 输入7输出1 测试: 输入9输出0 #include using namespace std; int main() { intn,i,d; cin>>n; for(i=2;i
第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
{ 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
C 循环结构23道题[含答案解析]
题目、描述、输入、输出、输入样例、输出样例、测试输入、测试输出 循环01:最大数 写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。 输入39 28 5 63 18 27 0 输出63 测试: 输入153 26 963 28 75 90 156 0 输出963 #include if(n==i) cout<<"1"< using namespace std; int main() { int n,d=0; cin>>n; while(n>0) { d++;