c语言期末上机考试复习题20题答案_第1页
c语言期末上机考试复习题20题答案_第2页
c语言期末上机考试复习题20题答案_第3页
c语言期末上机考试复习题20题答案_第4页
c语言期末上机考试复习题20题答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言题目试编程完成如下功能:1. 输入3个实数a, b, c要求按从大到小(或者从小到大)的顺序输出三数#includevoid main()float a,b,c,t;printf(请输入三个数!n”);scanf( %f,%f,%f ,&a,&b,&c);if(a=b)t=a;a=b;b=t;if(b=c)t=b;b=c;c=t;if(a=b)t=a;a=b;b=t;printf( %f %f %fn ”,a,b,c);2. 输入一个字符,如果是大写字母,则把其变成小写字母;如果是小写字母,则变成大写 字母;其它字符不变。#includevoid main()char c;printf(

2、请输入一个字符!n”);scanf( %c ,& c);if(c= A )&(cv=c=c+32;else if(c= &(cv=)c=c-32;elsec=c;printf( %cn ”,c);23. 读入a、b、c的值,计算一元二次方程ax +bx+c=0的根。#include#includevoid main()float a,b,c,n,m,t;printf(请输入 a, b, c 的值! n);scanf( %f,%f,%f ,&a,&b,&c);n=-b/(2*a);m=b*b-4*a*c;if(m0)t=sqrt(m);printf( Xi=%fX2=%fn ”n+t,n-t);

3、else if(m=0)printf( Xi=X 2=%fn ”n);elset=sqrt(-m);printf( Xi=%f+%fiX 2=%f-%fin ”n,t,n,t);4. 编写程序,判断某一年是否是闰年。#includevoid main()int y;printf(请输入年份!n ”;scanf( %d ”&y);if(y%4=0)&(y%100!= 0)| (y%100=0)&(y%400=0)printf( %d 年是闰年! n”,y);elseprintf( %d 年不是闰年! n”,y);5. 编一程序,对于给定的一个百分制成绩,输出相应的等级。设:90分以上为A 808

4、9分为 B 7079分为C 6069分为D ;60分以下为 E#includevoid main()int f;printf(请输入成绩!n ”;scanf( %d ”&f);switch(f/10)case 10:case 9: printf( An ”;break;case 8: printf( Bn );break;case 7: printf( Cn ”;break;case 6: printf( Dn ”;break;default:printf( En ”;6. 输入一个不多于3位的整数,将其逆序输出各位数字。(如输入123,输出321)#includevoid main()int

5、 t,a,b,c;printf(请输入一个三位整数!n);scanf( %d ,&t);a=t/100;b=t/10%10;c=t%10;if(a=0)if(b=0)printf( %dn ”,c);elseprintf( %d%dn ”,c,b);elseprintf( %d%d%dn ”,c,b,a);7. 从键盘上输入若10个学生的成绩,统计并输出最高成绩和最低成绩。#includevoid main()int a10,m,n,i=0;printf(请输入第%d个学生的成绩n”,i+1);scanf( %d ,&ai);m=ai;n=ai;for(i=1;i1O;i+)printf(请输

6、入第%d个学生的成绩n”,i+1); scanf( %d ,&ai);if(mai)n=ai;printf(最高成绩为%d分,最低成绩为 %d分。n”,m,n);8. 输出100以内所有能够同时被 5和7整除的整数。#includevoid main()int t=1,i;for(i=1;iv=100;i+)if(i%5=0)&(i%7=0) printf( %d ”,i);printf( n”);9. 求100200间的全部素数(质数)。#includevoid main()int i,j,n;for(i=100;iv200;i+)for(j=1,n=O;jv=i;j+)if(i%j=0)n

7、=n+1;if(n=2)printf( %d”,i);printf( n”);10. 输入一行字符,分别统计其中英文字母、数字和其它字符的个数。#includevoid main()char c;int l=0,s=0,o=0;printf(请输入一行字符!n”);while(c=getchar()!= n if(c= A)&(cv= )|(c= a )&(cv= )l+;else if(c=0)&(cv= 9 )s+;elseo+;printf(字母个数为%d,数字个数为%d,其它字符为%d。n”,l,s,o);11. 有一分数序列:2/1 , 3/2, 5/3, 8/5,13/8, 21/

8、13,,编写程序求这个数列的前20项之和。#includevstdio.hvoid main()int a=2,b=1,c,i;float s;s=1.0*a/b;for(i=2;iv=20;i+)c=b;b=a;a=a+c;s=s+1.0*a/b;printf(这个数列的前20项之和为%f。n”s);12. 编写程序,计算1!+2!+3!+n!的值,其中n的值由用户输入。#includevoid main()int n,s=1,m=0,i,j;printf(请输入n的值! n”; scanf( %d ”&n);for(i=1;iv=n;i+)for(j=1;jv=i;j+)s=s*j;m=m

9、+s;s=1;printf(值为 %d。n”m);13请编写一程序,将所有“水仙花数”打印出来,并打印出其总数。“水仙花数”是一个其各位数的立方和等于该整数的三位数。#includevoid main()int a,b,c,m=0,i;for(i=100;ivl000;i+)a=i/100;b=i/10%10;c=i%10;if(i=a*a*a+b*b*b+c*c*c)printf( %d ”,i);m=m+1;printf( “n”); printf( 一共有%d个数符合! n,m);14. 输出如下图形。* * * * * * *#includevoid main()int i,j;for

10、(i=1;iv=4;i+)for(j=1;jv=(4-i);j+)printf(for(j=1;jv=(2*i-1);j+)printf( * ”);printf( n”); 15. 请编写一程序,打印出九九乘法口诀表(例:1*1=1 )。#includevoid main()int i,j;for(i=1;iv=9;i+)for(j=1;jv=i;j+)printf( %dx %d=%2d”,j,i, i*j);printf( n”);16. 用起泡法(冒泡法)对八个数由大到小排序(从小到大)#includevstdio.hvoid main()int a8,i,j,t;for(i=0;iv

11、=7;i+)printf(请输入 a%d的值 ”,i);scanf( %d ”&ai);for(i=0;iv=7;i+) for(j=0;jv=(7-i);j+) if(ajaj+1) t=aj;aj=aj+1;aj+1=t;for(i=0;iv=7;i+)printf( %d ”ai);printf( n”;17. 将一个n*m二维数组的行和列元素互换,存到另一个m*n的二维数组中,并输出其结果。#includevoid main()int a2020=0,b2020=0,i,j,m,n;printf(请输入m、n的值! n ”;scanf( %d,%d ”&m,&n);for(i=0;in

12、;i+) for(j=0;jm;j+)printf(请输入 a%d%d的值”,i,j);scanf( %d ”&aij);for(i=0;in;i+) for(j=0;jm;j+) bji=aij;for(i=0;im;i+)for(j=0;jn;j+)printf( %d”,bij);printf( n”;18. 编程完成下述功能:从键盘输入一个n*n (最大为20*20 )矩阵的各元素的值,求出该矩阵两条对角线上各元素值之和并打印出结果。#includevoid main()int a2020=0,t=0,i,j,n;printf(请输入n的值! n”;scanf( %d ”&n);for

13、(i=0;in;i+)for(j=0;jn;j+)printf(请输入 a%d%d的值”i,j);scanf( %d ”&aij);for(i=0;ivn;i+)t=t+aii+ain-1-i;if(n%2)!=0)t=t-a(n-1)/2(n-1)/2;printf(两对角线元素之和为%dn ”t);19. 求Fib on acci数列中前20个数,Fibo nacci数列的前两个数为1, 1,以后每一个数都是前两个数之和。Fib on acci数列的前n个数为1, 1,2,3,5,8, 13,用数组存放数列 的前20个数,并输出之(按一行 5个输出)。#includevoid main()

14、int Fibonacci20,i,j;Fibonacci0=1;Fibonacci1=1;for(i=2;iv=19;i+)Fibonaccii= Fibonaccii-1+ Fibonaccii-2;for(i=0;iv=19;i+)printf( %d”,Fibonacci);if(i+1)%5=0)printf( n”;20. 使用递归法求n!(函数)#includeint f(int x)int m;if(x=0|x=1)m=1;elsem=x*f(x-1);return(m);void main()int n,y;printf(请输入n的值! n”;scanf( %d ”&n);y

15、=f(n);printf( %d !的值为 %dn ”n,y);逻辑运算符的混合运算:1、x=y=z=O;c=+x|+y&+z;prin tf(x=%d,y=%d,z=%d,x,y,z);结果:x=1,y=0,z=0解释:由于第一个是“或”运算符,当+z为1时,它具有短路特性,屏蔽掉后 面的运算符。2、x=y=z=O;c=(+x|+y )&+z;prin tf(x=%d,y=%d,z=%d,x,y,z);结果:x=1,y=0,z=1解释:由于在c的左边的逻辑表达式中的第一项含有“()”,所以(+x|+y)作 为一个整体一一作为一个数,所以先算括号里面的,然后由于“ &的运算符的 特性,再算+z

16、,而对于括号里的再由于“ ”的短路特性,只算了“ +x”,由 于它为“ 1”所以“ +y”就被屏蔽了。3、x=y=Oc=x&+y|+z;结果:c=1,x=0,y=0,z=1解释:注意逻辑运算符的运算顺序是自左向右,所以对于左边第一个“&运算符,首先算出它的逻辑值,再和后面的“ | ”运算,作为c的结果。根据优先级 的顺序和“ &的短路特性,由于开始x=0,则整个“ &的逻辑表达式的逻辑 值就是0,而且+y也被屏蔽掉了,再由于后面的“ | ”的特性,根据+z,可知 c=1,z=1 。4、x=y=z=0;c=x|+y&z;结果:c=0,x=0,y=1,z=0解释:如果“ | ”前为“ 1 ”则整个表达式即c=1;若“| ”前为“0”时,那么根据”的特性,该表达式的值由后面的逻辑值确定。对 于后面的逻辑表达式,根据“ &的特性,由于+y=1而z=0,可知c=0,y=1。5、x=y=z=0;c=x|+y&+z;结果:c=1,x=0,y=1,z=1解释:结合上一题可知,由于x=0,则该表达式的值由后面的表达式确定,根据“&的特性,由于“ +y”的值为“ 1 ”则继续再算“ &后面的“ +z”,由 于“ +z”的值也为“ 1”所以c=1,y=1,z=1 o6、x=y=z=0;c=x&+

温馨提示

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

评论

0/150

提交评论