循环结构程序设计习题及答案.doc
《循环结构程序设计习题及答案.doc》由会员分享,可在线阅读,更多相关《循环结构程序设计习题及答案.doc(12页珍藏版)》请在咨信网上搜索。
循环结构程序设计习题答案 一、 单选题。 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; } C.int k=0; D.int s=36; do{++k; } while(s); while(k>=0); --s; [解答]:C。 7. 以下能正确计算1*2*3*……*10的程序是()。 A.do{i=1;s=1; B.do{i=1;s=0; s=s*i; s=s*i; i++; i++; }while(i<=10); }while(i<=10); C.i=1;s=1; D.i=1;s=0; do{ s=s*i; do{ s=s*i; i++; i++; }while(i<=10); }while(i<=10); [解答]:C。 8. 下面程序的运行结果是( )。 #include <stdio.h> void main() { int y=10; do{y--;} while(--y); printf("%d\n",y--);} A.-1 B.1 C.8 D.0 [解答]:B。 9. 下面程序的运行结果是()。 #include<stdio.h> void main() { int num=0; while(num<=2) { num++; printf("%d\n",num); } } A.1 B.1 2 C.1 2 3 D.1 2 3 4 [解答]:C。 10. 若运行以下程序时,从键盘输入3.6 2.4<CR>(<CR>表示回车),则下面程序的运行结果是( )。 #include<math.h> #include<stdio.h> void 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 [解答]:B。 二、 看程序,写运行结果。 1. 若运行以下程序时,从键盘输入2473↙,则下面程序的运行结果是()。 #include<stdio.h> void main() {int c; while((c=getchar())!=’\n’) switch(c-‘2’) {case 0: case1: putchar(c+4); case2: putchar(c+4);break case3: putchar(c+3); default: putchar(c+2);break; } printf(“\n”); } [解答]:668977。 2. 若运行以下程序时,从键盘输入ADescriptor↙,则下面程序的运行结果是()。 #include <stdio.h> void 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’:v+=1; default:v0+=1;v2+=1;} }while(c!=’n\’); printf(“v0=%d,v1=%d,v2=%d\n”,v0,v1,v2); } [解答]:v0=12,v1=4,v2=12。 3. 下面程序的运行结果是()。 #include<stdio.h> void main() { int i,b,k=0; for(i=1;i<=5;i++) { b=i%2; while(b- ->=0) k++; } printf(“%d,%d”,k,b); } [解答]:8,-2。 4. 下面程序的运行结果是()。 #include<stdio.h> void main() { int a,b; for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3; continue;} b-=5; } printf(“%d\n”,a); } [解答]:8。 5. 下面程序的运行结果是()。 #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); } [解答]:x=8。 6. 下面程序的运行结果是()。 #include<stdio.h> void main() { int i; for (i=1;i<=5;i++) { if(i%2) printf(“*”); else continue; printf(“#”); } printf(“$\n”); } [解答]:*#*#*#$。 7. 下面程序的运行结果是( )。 #include<stdio.h> void main() { 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); } [解答]:4。 8. 下列程序运行后的输出结果是( )。 #include<stdio.h> void main() { int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=20-3*i;j++) printf(""); for(k=1;k<=2*i-1;k++) printf("%3s","*"); printf("\n"); } for(i=3;i>0;i--) { for(j=1;j<=20-3*i;j++) printf(""); for(K=1;k<=2*i-1;k++) printf("%3s","*"); printf("\n"); } } [解答]:* * * * * * * * * * * * * * * * * * * * * * * * * 9. 下列程序运行后的输出结果是() #include<stdio.h> void main() { int i,j,k; for(i=1,i<=6;i++) { for(j=1;j<=20-3*j;j++) printf("%3d",k); for(k=i-1;k>0;k--) printf("%3d",k); printf("\n"0); } } [解答]: 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 5 6 5 4 3 2 1) 三、 程序填空。 1. 下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,请在 内填入正确内容。 #include<stdio.h> void main() { char c; while((c=getchar())!=’\n’) { if(c>=’a’&&c<=’z’) { ; for(c>’Z”&&c<=”Z”+2) ; } printf(“%c”,c); } } [解答]:c-=30,c-=26。 2. 下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输入m,n中的较大数,请在 内填入正确内容。 #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(“%d\n”,m<n? ); } [解答]:c=getchar(),n:m。 3. 下面程序的功能是把316表示为两个加数分别能被13和11整除。请在 内填入正确内容。 #include <stdio.h> void main() { int i=0,j,k; do{i++;k=316-13*i;} while( ); j=k/11; printf(“316=13*%d+11*%d”,i,j); } [解答]:k%11。 4. 从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。请在 内填入正确内容。 #include <stdio.h> void main() { float x, amax, amin; scanf(“%f”,&x); amax=x; amin=x; while( ) { if(x>amax) amax=x; if( ) amin=x; scanf(“%f”,&x); } printf("amax=%f\namin=%f\n",amax, amin); } [解答]:x>=0,x<amin。 5. 求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表示一个三位数)。请在 内填入正确内容。 #include<stdio.h> void main() { int x,y,z,i,result=532; for(x=1; ;x++) for(y=1; ;y++) for(z=0; ;z++) { i=100*x+10*y+z+100*y+10*z+z; if( ) printf("x=%d,y=%d,z=%d\n",x,y,z); } } [解答]:x<10,y<10,z<10,i==result。 6. 根据公式e=1+1/1!+1/2!+1/3!+…求e的近似值,精度要求为10-6。请在 内填入正确内容。 #include<stdio.h> void main() { int i;double e,new; e=1.0;new=1.0; for(i=1; ;i++) { ; ; } printf("e=%f\n",e) } [解答]:new>=1e-6,new/=(double)i,e+=new。 7. 完成用一元人民币换成一分、两分、五分的所有兑换方案。请在 内填入正确内容。 #include<stdio.h> void main() { int i,j,k,l=1; for(i=0;i<=20;i++) for(j=0; ;j++) { ; if(k>=0) { printf(" %2d, %2d, %2d ",i,j,k); ; if(l%5==0) printf("\n"); } } } [解答]:j<=50,k=100-i*5-j*2,l=l+1。 8. 统计正整数的各位数字中零的个数,并求各位数字中的最大者。请在 内填入正确内容。 #include<stdio.h> void main() { int n,count,max,t; count=max=0; scanf(“%d”,&n); do { ; if( ) ++count; else if( ) max=t; ; } while(n); printf(“count=%d,max=%d”,count,max); } [解答]:t=n%10,t==0,max<t,n/=10。 四、 编程题。 1. 根据公式Π²/6≈1/1²+1/2²+1/3²+…+1/n²,求Π的近似值,直到最后一项的值小于10的负六次方为止。 [解答]: #include<stdio.h〉 #include<math.h> main( ) { long i=1; double pi=0; while(I*I<=10e+6) { pi=pi+1.0/(i*i); i++; } pi-sqrt(6.0*pi); printf(“pi=%10.6f\n”,pi); } 2. 有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请编程计算。 [解答]:#include<stdio.h> main( ) {int day,x1,x2; day=0; x1=1020; while(x1) {x2=(x1/2-2); x1=x2; day++;} printf(“day=%d\n”,day); } 3. 编程实现用“辗转相除法”求两个正整数的最大公约数。 [解答]:#include<stdio.h> main( ) { int r,m,n; scanf(“%d%d”,&m,&n); if (m<n) {r=m,m=n,n=r}; r=m%n; while(r) {m=n; n=r; r=m%n;} printf(“%d\n”,n); } 4. 等差数列的第一项a=2,公差d=3,编程实现在前n项和中,输出能被4 整除的所有的和。 [解答]: #include<stdio.h> main() { int a,d,sum; a=2;d=3;sum=0; do { sum+=a; a+=d; if(sum%4==0) printf(“%d\n”,sum); } while(sum<200); } 5. 求出用数字0至9可以组成多少个没有重复的三位偶数。 [解答]: #include<stdio.h> main() { int n,i,j,k; n=0; for(i=1;i<9;i++) if( k=0;k<=8; k+=2) if(k!=i) for(j=1;j<9;j++) if(j!=i&&j!=k) n++; printf(“n=%d\n”,n); } 6. 输出1至100之间每位数的乘积大于每位数的和的数。 [解答]:#include<stdio.h> main() { int n,k=1,s=0,m; for(n=1;n<=100;n++) { k=1;s=0; m=n; while(m) { k*=m%10; s+=m%10; m/=10; } if(k>s) printf(“%d”,n); } } 7. 下面程序的功能是求1000以内的所有完全数。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数) [解答]:#include<stdio.h> main() { int a,i,m; for(a=1;a<=100;a++) { for(m=0,i=1;i<=a/2;i++) if(!(a%i)) m+=i; if(m==a) printf(“%4d”,a); } } 8. 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。求这堆零件总数。 [解答]:#include <stdio.h> main() {int i; for(i=100;i<200;i++) if((i-2)%4==0) if(!((i-3)%7)) if((i-5)%9!=0) printf(“%d”,i); }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计 习题 答案
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【仙人****88】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【仙人****88】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【仙人****88】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【仙人****88】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文