MSE C语言第四章习题.doc_第1页
MSE C语言第四章习题.doc_第2页
MSE C语言第四章习题.doc_第3页
MSE C语言第四章习题.doc_第4页
MSE C语言第四章习题.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

考研网 /下面是研究生考试网为报考GCT软件工程硕士的考生整理的MSE考研复习备考资料。希望这些资料能够给考生一定帮助。在此,预祝考生复习备考顺利!第五章 循环结构一、单项选择题1int a=1, x=1; 循环语句while(a10) x+; a+; 的循环执行( )。 A. 无限次B不确定次C10次D9次2下列语句中,错误的是( )。 Awhile(x=y) 5;Bdo x+ while(x= =10); Cwhile(0) ;Ddo 2;while(a= =b);3循环语句for(x=0,y=0;(y! =123)| | (x0; i+); 的循环执行( )。 A无限次B不确定次C10次D9次5 i、j 已定义为int类型,则以下程序段中内循环体的执行次数是( )。 for(i=5;i;i-) for(j=0;j4;j+)A20B24C25D306. while循环,执行次数是( ) i=4; while(-i) printf(“%d”,i);A. 3次 B. 4次 C. 0次 D. 无数次7. 下列程序段执行后 s的值为( ) int i=1, s=0; while(i+) if( !(i%3) ) break ; else s+=i ; A. 2 B. 3 C. 6 D. 以上均不是8. 下列程序输出结果是( )#include void main( ) int x=3, y=6, z=0; while(x+!=(y-=1) z+; if(yx) break; printf(“x=%d,y=%d,z=%d”,x,y,z);A. x=4,y=4,z=1 B. x=5,y=4,z=3 C. x=5,y=4,z=1 D. x=5,y=5,z=19. int i=1,s=0;while (i100 ) break;执行以上程序段后,s的值是( )。A1到101的和 B1到100的和C1到99的和D以上均不是10. 假定i和j为int型变量,则执行以下语句后i的值为 ( )。int i=1;switch (i+)case 1: for (j=0;j9;j+) if (i= =1) break;case 2: for (j=1;j10;j+) if (i= =2) break;case 3: printf (“i=%dn”,i );A0B1C9D1011. 假定a和b为int型变量,则执行以下语句后b的值为 ( )。a=1;b=10;do b - =a;a+;while (b- -0);A9B-2C-1D812. 设x和y均为int型变量,则执行下面的循环后,y的值为 ( )。for (y=1,x=1;y=10 ) break; if (x%2=1) x+=5;continue; x - =3;A2B4C6D813. 求整数1至10的和并存入变量s,下列语句中错误的是( )。 A、s=0;for(i=1;i=10;i+) s+=i; B、s=0;i=1;for(;i=10;i+) s=s+i; C、for(i=1,s=0;i=10;s+=i,i=i+1); D、for(i=1;s=0;i=10;i+) s=s+i;14. 若sizeof(int)为2,计算1至10的乘积,下列语句序列中正确的是( )。 A、int jc=1; for(int i=2;i=10;i+) jc*=i; B、for(float jc=1,int i=2;i=10;i+,jc*=i); C、float jc=1; for(int i=2;i=10;jc*=i,i=i+1); D、for(float jc=1;i=2;i=10;i+) jc*=i;15. 下列语句中,哪一个可以输出26个大写英文字母( )。 A、 for(a=A;a=Z;printf(”%c”,+a); B、for(a=A;aZ;a+)printf(”%c”,a); C、for(a=A;a=Z;printf(”%c”,a+); D、for(a=A;a=0&i=0&i=0&i=0&i=10;i+) if(i!=5) printf(”%fn”,1.0/(i-5); else break; D、for(;i=10;i+) if(i!=5) printf(”%fn”,1.0/(i-5);17. 下列语句中与语句 while(1)if(i=100)break;s+=i;i+; 功能相同的是( )。 A、for(;i100;i+) s=s+i; B、for(;i100;i+;s=s+i); C、for(;i=100;i+;s=s+i);18. 在C语言中,下列说法中正确的是 ( )。 A不能使用“do语句while(条件)”的循环 B“do语句while(条件)”的循环必须使用“break”语句退出循环 C“do语句while(条件)”的循环中,当条件为非0时将结束循环 D“do语句while(条件)”的循环中,当条件为0时将结束循环19. C语言中while和do-while循环的主要区别是()。A) do-while的循环体至少无条件执行一次B) while的循环控制条件比do-while的循环控制条件严格C) do-while允许从外部转到循环体内D) do-while的循环体不能是复合语句20. 以下描述中正确的是()。A) 若while循环中循环体语句只有一条可执行语句,就可以不使用复合语句B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D) do-while循环中,根据情况可以省略while21 设有程序段int k=10;while(k) k=k-1;则下面描述中正确的是( )。A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次22 下列循环语句中有语法错误的是( )。A) while(x=y) 5; B) while(0) ;C) do printf(“%d”,a);while(a-); D) do x+ while(x=10);23. 已知int i=1; 执行语句while (i+4) ;后,变量i的值为( )。A) 3 B) 4 C) 5 D) 624、语句while(!E);中的表达式!E等价于( )。A)E=0B)E!=1C)E!=0D) E=125、下面程序段的运行结果是( )。a=1; b=2; c=2;while(abc) t=a; a=b; b=t; c-;printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,126、下面程序的运行结果是( )。#include main()int num=0;while(num=2)num+;printf(“%dn”,num);A)1B)1C)1D)1 2 2 2 3 327、以下能正确计算12310的程序段是( )。 A)doi=1; s=1;B)doi=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; dos=s*i; dos=s*i; i+; i+; while(i=10); while(i=10);28、下面程序的运行结果是( )。#include main()int y=10;do y-; while(-y);printf(“%dn”,y-);A)-1 B)1 C)8 D)029、已知int i=1,j=0;执行下面语句后j的值是( )。while(i)switch(i) case 1: i+=1;j+;break;case 2: i+=2;j+;break;case 3: i+=3;j+;break;default: i-;j+;break;A) 1 B) 2 C) 3 D) 死循环30、若运行以下程序时,从键盘输入2473,则下面程序的运行结果是()。#include main()int c;while(c=getchar()!=n)switch(c-2)case 0:case 1: putchar(c+4);case 2: putchar(c+4); break; case 3: putchar(c+3);default: putchar(c+2); break;printf(“n”);A)668977B)668966C)66778777D)668876631、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。#include main()int m=0,n=0;char c;while( )!=n) if(c=A&c=a&c=z) n+;printf(“%dn”,mn? );(1) A)c=getchar()B)getchar() C)scanf(“%c”,c)(2) A)n:mB)m:nC)m:mD)n:n32. 下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。#include main()int a,max=0;scanf(“%d”,&a);while( )if(maxa) max=a;scanf(“%d”,&a);printf(“%d”,max); A)a=0 B)a C)!a=1 D)!a33. 下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。#include main()int n,sum=0;n=2345;dosum=sum+ ;n= ;while(n);printf(“sum=%d”,sum);(1) A)n%10B)(n%10)*(n%10)C)n/10 D)(n/10)*(n/10)(2) A)n/1000 B)n/100C)n/10 D)n%1034.以下While循环中,循环体执行的次数是 。 k=1; while(-k) k=10; A.10次B.无限次C. 一次也不执行D. 1次35. 有以下程序段,其中n为整型变量。运行结果为 n=2; while(n-); printf(%d ,n); A. 2B. 1 0 C. 1D. 036 若变量已正确定义,以下不能正确计算1+2+3+4+5的程序段是 A. i=1;s=1; do s=s+i;i+; while (i5); B. i=0;s=0; doi+;s=s+i; while(i5); C. i=1;s=0; do s=s+i;i+;while(i6); D. i=1;s=0; do s=s+i;i+; while(i8;y=+i)printf(%d,%d,x-,y); 39以下程序的输出结果是()A、2 0B、3 1C、3 2 1D、2 1 0main( ) int n=4;while(n-) printf(%d ,-n);40以下程序的输出结果是()A、#*#*# B、# C、* D、*#*#*main( ) int i;for(i=1;i6;i+) if(i%2) printf(#);continue;printf(*);printf(n);41以下程序的输出结果是()A、编译不通过,无输出 B、acegC、acegiD、abcdefghimain( ) int i;for(i=A;iI;i+,i+) printf(%c,i+32);printf( n);42以下循环体的执行次数是()A、3 B、2 C、1D、0main( ) int i,j;for(i=0,j=1; i20) break; while(a=14);44有如下程序main( ) int i,sum;for(i=1;i6) n-;printf(%d,n);该程序段的输出结果是( )A、987B、876C、8765D、987647. 有以下程序段int k=0;while(k=1)k+;while 循环执行的次数是( )A、无限次B、有语法错,不能执行C、一次也不执行D、执行1次48. 以下程序执行后sum的值是( )A、15B、14C、不确定D、0min( ) int i,sum;for(i=1;i6;i+)sum+=i;printf(%dn,sum);49. 有以下程序段int x=3;do printf(%d,x-=2);while (!(-x);其输出结果是( )A、1B、3 0C、1 2D、死循环50. t为int类型,进人下面的循环之前,t的值为0( )while( t=l ) 则以下叙述中正确的是A、循环控制表达式的值为0B、循环控制表达式的值为1C、循环控制表达式不合法D、以上说法都不对51. 以下循环中,while循环的次数是( )main( ) int i=0; while(i10) if (i1) continue;if(i=5) break;i+;A、1B、10C、6D、死循环,不能确定次数52. 以下程序的输出结果是( )main( ) int a=0,j; for(j=0;j0; y - -) if(y%3=0) printf(“%d”, - -y); continue;2. 阅读下列程序,写出程序运行的输出结果。 void main ( ) int i=5; do switch (i%2) case 4: i- -; break; case 6: i- -; continue; i- - ; i- - ; printf(“i=%d ”, i); while(i0);3. 阅读下列程序,写出程序运行的输出结果。 #include void main( ) int k=0; char c=A; do switch (c+) case A: k+; break; case B: k-; case C: k+=2; break; case D: k=k%2; break; case E: k=k*10; break; default: k=k/3; k+; while(cG); printf(k=%dn, k); 4. 阅读下列程序,当输入为:ab*AB%cd#CD$ 时,写出程序运行的输出结果。 void main ( ) char c; while( (c=getchar( )!=$) if(A=c & cZ) putchar(c); else if(a=c & c=z) putchar(c-32); 5. 阅读下列程序,输入数据:2,4, 写出程序运行的输出结果。 #include void main() int s=1,t=1,a,n; scanf(%d%d,&a,&n); for(int i=1;in;i+) t=t*10+1; s=s+t; s*=a; printf(SUM=%dn,s); 7.读下列程序,写出程序运行的输出结果. #include void main() int i,j,n; for(i=0;i4;i+) for(j=1;j=i;j+) printf( ); n=7-2*i; for(j=1;j=n;j+) printf(%1d,n); printf(n); 7. main()int i,s=0; for(i=1;i=100;i+) if(i%10!=0) continue; s=s+i; printf(i=%d,s=%dn,i,s); 8. main()int i,s=0; for(i=1;i=100;i+) s=s+i; if(i=10)break; printf(i=%d,s=%dn,i,s); 9. main() int i=1; while (i=15) if (+i%3!=2) continue; else printf(%d ,i); printf(n); 10. main() int i,j,k; char space= ; for (i=0;i=5;i+) for (j=1;j=i;j+) printf(%c,space); for (k=0;k=5;k+) printf(%c,*); printf(n); 11#include main() int i,j,k=0; for (j=11;j=30;j+) if (k%10=0) printf(n); for (i=2;i=j-1) printf(%dt,j); k+; 三、完善程序题1 下列程序的功能是输入一个正整数,判断是否能被3或7整除,若能整除,输出“YES”, 若不能整除,输出“NO”。请为程序填空。void main( ) int k;scanf (“%d”, &k);if ( ) printf(“YESn”); else printf (“NOn”); 2下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出1,否则输出0, 请为程序填空。void main( ) int i, x, y=1;scanf(“%d”, &x);for(i=2; i=x/2; i+) if ( ) y=0; break; printf(“%dn”,y);3. 输入2个整数,输出它们的最小公倍数和最大公约数。 #include void main( ) int m,n,gbs,gys; scanf( ); for(gbs=m; ; gbs=gbs+m); gys= ; ; 4. 输入N个实数,输出其中的最大值、最小值。 #include void main() float no1,nmax,nmin; float nox ; int i,n; scanf(%d,&n); scanf(%f,&no1); nmax=no1; ; for(i=2;inmax) nmax=nox; ; printf(MAX=%f MIN=%fn,nmax,nmin); 5. 输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输 出统计结果,运行结束。 #include void main() char ch; ; while( )!=n) if(ch=0&ch=a&ch=z | ) s2+; ; 6. 输入m,求n使 n!=m=(n+1)!,例如输入726,应输出n=6。 void main() int ; scanf( ); for(n=2;jc=m;n+) jc=jc*n; printf(”n=%dn”, ); 7. 下列程序计算并输出方程 X2+Y2+Z2=1989 的所有整数解。 #include void main() ; for(i=-45;i=45;i+) for( ) for(k=-45;k=45;k+) if( ) printf( , i,j,k); 8. 执行下面程序段后,k值是 。k=1; n=263;do k*=n%10; n/=10; while(n);9. 下面程序的运行结果是 。#include main()int a,s,n,count;a=2; s=0; n=1; count=1;while(count=7) n=n*a; s=s+n; +count; printf(“s=%d”,s);10. 下面程序段的运行结果是 。x=2;do printf(“*”); x-; while(!x=0);11. 当运行以下程序时,从键盘键入China#(代表回车),则下面程序的运行结果是 。#include main()int v1=0,v2=0; char ch;while(ch=getchar()!=#)switch(ch)case a:case h:default: v1+;case o: v2+;printf(“%d,%dn”,v1,v2);12. 下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。#include main()int r,m,n;scanf(“%d %d”,&m,&n);if(mn) r=m%n;while(r) m=n; n=r; r= ; printf(“%dn”,n);13. 下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印五个数。请填空。#include main()int i=1,j=0;doif( )printf(“%4d”,i);j=j+1;if( ) printf(“n”);i=i+1;while(i1000);14. 等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被4整除的所有的和。请填空。#include main()int a,d,sum;a=2; d=3; sum=0;dosum+=a; ; if( ) printf(“%dn”,sum);while(sum200);四 程序设计题1 编一个程序,求出所有各位数字的立方和等于1099的3位整数。2.编一个程序,求费波那契(Fibonacci)序列:1,1,2,3,5,8,.。请输出前20项。序列满足关系式: Fn=Fn-1+Fn-23.编一个程序,利用格里高利公式求值。 /4=1-1/3+1/5-1/7+.。精度要求最后一项的绝对值小于1e-5.4.编一个程序, 求 s=1!+2!+3!+.+n!, (n由输入决定)。5.编程序按下列公式计算e的值(精度为1e-6):e=1+1/1!+1/2!+1/3!+1/n!6.编程序按下列公式计算y的值(精度为1e-6): 7.编一个程序显示ASCII代码0x200X6f的十进制数值及其对应字符。8.输出610000之间的亲密数对。说明: 若(a,b)是亲密数对,则a的因子和等于b,b的因子和等于a,且a不等于b。如(220,284) 是一对亲密数对。9.用“辗转相除法”对数入的两个正整数m和n求其最大公约数和最小公倍数。解:“辗转相除法”算法如下: (1)将两数备份a, b。(2)将两数中大的那个放在m中,小的放在n中。(3)求出m被n除后的余数r。(4)若余数r为0则执行步骤(7);否则执行步骤(5)。(5)把除数(n中的)作为新的被除数(放m中),把余数(r中的)作为新的除数 (放n中)。(6)重复步骤(3)(4)直到r为0,(7)输出n即为最大公约数(8)原数(在备份a,b中)相乘除最大公约数即为最小公倍数。10.求Sn=a+aa+aaa+aaa之值,其a中代表1到9中的一个数字。例如:a代表2, 则求2+22+222+2222+22222(此时n=5),a和n由键盘输入。11.若一个3位整数的各位数字的立方之和等于这个整数,称之为“水仙花数”。例如:153是水仙花数,因为153=13+53+33 求所有的水仙花数。12.从键盘输入一个正整数n,计算该数的各位数之和并输出。例如,输入数是5246, 则计算:5+2+4+6=17 并输出。13. 猴子吃桃子问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃 了一个。第二天早上又将剩下的桃子吃棹一半,又多吃了一个。以后每天早上都吃了 昨天的一半零一个。到第10天早上一看,只剩下一个桃子了。求第一天共摘下多少 个桃子。14. 计算并输出方程 X2+Y2=1989 的所有整数解。15输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。16找出1000以内的所有完数,并输出其因子。 (一个数如恰好等于它的因子之和,这个数称为完数,如6=1+2+3)。17. 输入一个正整数,输出它的所有质数因子(分解因子)。第五章 循环结构一、单项选择题1.A 2.B 3.A 4.A 5.A 6.A 7.A 8.C 9.C 10.B 11.D 12.C 13.D 14.C 15.C 16.A 17.A 18.D 19.A 20.A 21.A 22.D 23.C 24.A 25.A 26.C 27.C 28.D 29.D 30.A 31.A、A 32.B 33.B、C 34.B 35.B 36.B 37.B 38.D 39.A 40.A 41.B 42.C 43.B 44.C 45.B 46.B 47.A 48.C 49.C 50.B 51.C 52.A二、读程序,写运行结果1. 8 5 2 2. 3 1 -13. k=8 4. ABABCDCD5. SUM=2468 6. 7777777 55555 333 17. i=101,s=5508. i=10,s=559. 2 5 8 11 1410. * * * * *11. 11 13 17 19 23 29三、完善程序题1. (k%3=0) | (k%7=0)2. x % i=03. “%d%d”,&m,&n gbs%n!=0 m*n/gbs printf(“gbs=%d gys=%d”,gbs,gys)4.nmin=nol&noxelse if(nox=A&ch=Z printf(“%dt%dn”,s1,s2)6. #include m,n,jc=1 “%d”,&mn-27. int i,j,k j=-45;j=45;j+i*i+j*j+k*k=1989“%d,%d,%d”8.369.s=25410.*11.5,512.r=m,m=n,n=r; m%n 13.i%3=2 &i%5=3 & i%7=2j%5=0 14.a+=d sum%4=0四 程序设计题1 编一个程序,求出所有各位数字的立方和等于1099的3位整数。 解:#include void main( ) int i, j, k; for(i=1; i=9; i+)/* 百位数 */ for(j=0; j=9; j+) /* 十位数 */ for(k=0; k=9; k+)/* 个位数 */ if( i*i*i+j*j*j+k*k*k= =1099) printf(“各位数字的立方和等于1099的整数是:%dn”,i*100+j*10+k); 2.编一个程序,求费波那契(Fibonacci)序列:1,1,2,3,5,8,.。请输出前20项。序列满足关系式: Fn=Fn-1+Fn-2 解:#include void main( ) int i, t, f1=1, f2=1 ; printf(“%d %d”,

温馨提示

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

评论

0/150

提交评论