第6章循环结构程序设计.doc_第1页
第6章循环结构程序设计.doc_第2页
第6章循环结构程序设计.doc_第3页
第6章循环结构程序设计.doc_第4页
第6章循环结构程序设计.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章循环结构程序设计1以下叙述正确的是()A、 do-while语句构成的循环不能用其它语句构成的循环代替。B、 do-while语句构成的循环只能用break语句退出。C、 用do-while语句构成的循环,在while后的表达式为非零时结束循环。D、 用do-while语句构成的循环,在while后的表达式为零时结束循环。答案:D2以下程序的输出结果是()A、10,1 9,2B、9,8 7,6C、10,9 9,0D、10,10 9,1 main( ) int x=10,y=10,i; for(i=0;x8;y=+i)printf(%d,%d,x-,y); 答案:D注解:循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。3以下程序的输出结果是()A、2 0B、3 1C、3 2 1D、2 1 0main( ) int n=4;while(n-) printf(%d ,-n);答案:A4以下程序的输出结果是()A、#*#*# B、# C、* D、*#*#*main( ) int i;for(i=1;i6;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、acegC、acegiD、abcdefghimain( ) int i;for(i=A;iI;i+,i+) printf(%c,i+32);printf( n);答案:B注解:循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。6以下循环体的执行次数是()A、3 B、2 C、1D、0main( ) 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,i20) break; while(a=14);答案:C注解:程序段的执行过程如下:进入循环,执行循环体,输出a=12 y=12,判断if语句的条件y20,不成立,循环的条件是赋值表达式,一直为真;再次进入循环,执行循环体,输出a=14 y=26,判断if语句的条件y20,条件成立,则执行break;语句,跳出整个循环的执行。8有如下程序main( ) int i,sum;for(i=1;i=3;sum+)sum+=i;printf(%dn,sum);该程序的执行结果是()A、6B、3C、死循环D、0答案:C注解:在for循环中,循环终止的条件是i6) n-;printf(%d,n);该程序段的输出结果是()A、987B、876C、8765D、9876答案:B注解:循环执行的条件是n6,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、 15B、14C、不确定D、0min( ) int i,sum;for(i=1;i6;i+)sum+=i;printf(%dn,sum);答案:C注解:因为变量sum没有初值,所以它的初值是不确定的,则最后它的值是不确定的。13有以下程序段int x=3;do printf(%d,x-=2);while (!(-x);其输出结果是()A、1B、3 0C、1 2D、死循环答案:C注解:do-while循环体先执行第一次,输出表达式x-=2的值为1,x 的值减为1,然后判断条件!(-x)为真,则第二次执行循环体,输出表达式x-=2的值为-1,x的值减为-1,再判断条件!(-x)为假,则终止循环执行。14t为int类型,进人下面的循环之前,t的值为0()while( t=l ) 则以下叙述中正确的是A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合D、以上说法都不对答案:B注解:赋值表达式的取值为1,则循环的控制表达式的值为1。15以下循环中,while循环的次数是()main( ) int i=0; while(i10) if (i1) continue;if(i=5) break;i+;A、1B、10C、6D、死循环,不能确定次数答案:D注解:while循环的退出条件是i1或i=5,第一次条件i10满足,执行循环体中的第一个if语句,判断条件i1成立,则执行continue,退出本次循环的执行,第二个if语句和i自增的语句并不执行,则i的值一直保留0不变,所以循环一直做下去。16以下程序的输出结果是()main( ) int a=0,j; for(j=0;j4;j+) switch( j ) case 0:case 3:a+=2;case 1:case 2:a+=3;default:a+=5;printf(%dn,a);A、36B、13C、10D、20答案:A注解:循环执行4次,执行过程是:(1)j=0时,执行开关选择语句,因为没有break,所以每一个case子句后的语句都要执行,a+=2,a+=3,a+=5,则a=10;(2)j=1时,类似执行case 1后的每一个case子句,a+=3,a5,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(i20) for(;)if(i%10)=0) break; else i-; i+=11;a+=i;printf(%dn,a);A、21B、32C、33D、11答案:B注解:二重循环执行时,先执行外层while循环,条件i20成立,执行内层循环,判断if语句的条件(i%10)=0成立,则退出内层循环的执行,i=11,a=11;再判断外层循环的条件i20成立,执行内层循环,if语句的条件(i%10)=0不成立,执行else子句,i=10,继续执行内层循环,条件(i%10)=0成立,退出内层循环的执行,i=21,a=32,外层循环的条件不成立,退出整个外层循环的执行。填空题1 以下程序的输出结果是_main( )int s,i; for(s=0,i=1;i3;i+,s+=i) ; printf(%dn,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(%dn,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;ttI;I+) if(a=ttI)|(ttI= z) ttI-=32;return (tt); main( ) int I;char tt20;clrscr( );printf(nPlease enter a string:);gets(tt);printf(nThe result string is:n%s,fun(tt);puts(tt);答案:将if(a=ttI)|(ttI= z)改为if(a=ttI)&(ttI= z)注解:要将小写字母都改为对应的大写字母,其他字母不变,则在fun函数中,对数组tt中的字符进行判断,若是小写字母,则进行转换,否则什么也不做,表示字符是小写字母的表达式是(a=ttI)&(ttI= z),即字符是介于小写字母a与z之间。2给定程序中函数fun的功能是:计算并输出M以内最大的10个素数之和,M由主函数传给fun函数。若M的值为100,则函数的值为732。请改正fun函数中的错误,使程序能输出正确的结果。程序:#include #include int fun(int M) int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论