中南大学《C语言程序设计》期末编程试题及答案_第1页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、1. 以下程序由终端输入两个整数给变量x和y,然后输出x和y,在交换x和y中的值后。再输出x和y。main()int x,y,t;printf(Enterx&y:n);scanf(%d%d,&x,&y); t=x;x=y; y=t;printf(x=%d,y=%dn,x,y);以下是程序运行情况:Enterx&y(由第四行的printf输出)123 456(从键盘输入两个整数,代表Enter键)x=123 y=456(由第六行的Printf输出)x=456 y=123(由第八行的Printf输出)2.输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此

2、数。main()double x;printf(Enter:n);scanf(%lf,&x);printf(x=%fn,x);x=x*100;x=x+0.5;x=(int)x;x=x/100;printf(x=%fn,x);运行结果如下:Enter x:(Printf输出提示信息)123.456(从键盘输入123.4567,代表Enter键)x=123.456700(输出原始数据)x=123.460000(输出对第三位小数进行四舍五入后的数据)注意:在Scanf函数中给出double类型变量输入数据时,应该使用%lf格式转换说明符,而输出,对应的格式转换说明符可以是%f,也可以是%f。3.编写

3、程序:把560分钟换算成用小时和分钟表示,然后进行输出。main()int a=560,b,c;b=a/60;c=a%60;printf(b=%d,c=%dn,b,c);注:可以将该题改为输入一个数将其分解为小时和分钟来表示。main()int x,a,b;printf(Enter x:n);scanf(%ld,&x);printf(x=%dn,x);a=x/60;b=x%60;printf(a=%dnb=%dn,a,b);注:对于第一个printf(“Enter x:n”);有点麻烦。4.编写程序:输入两个整数:1500和350,求出它们的商和余数并进行输出。main()int x=1500

4、,y=350,a,b;a=x/y;b=x%y;printf(a=%d,b=%dn,a,b);注:本题同样可以进行以上操作将一个数分解。5.编写程序:读入三个双精度数,求它们的平均值并保留此平均值小数点后一位,对小数点后第二位进行四舍五入,最后输出结果。main()double x,y,z,a;printf(Enter x,y,z:n);scanf(%lf%lf%lf,&x,&y,&z);a=(x+y+z)/3.0;a=a*10;a=a+0.5;a=(int)a;a=a/10;printf(a=%fn,a);6.编写程序:读入三个整数给a,b,c然后交换它们中的数,把a中原来的值给b,把b中原来

5、的值给c,把c中原来的值给a,然后输出a,b,c。main()int a,b,c,t;printf(Enter a,b,c:n);scanf(%ld%ld%ld,&a,&b,&c);t=a;a=c;c=b;b=t;printf(a=%d,b=%d,c=%dn,a,b,c);7.输入两个数,分别放入x和y中,若两个数不相等,则输出其中的大数;若两数相等,则输出字符串x=y和x的值。main()int x,y;printf(Enter x,y:n);scanf(%d%d,&x,&y);printf(x=%d,y=%dn,x,y);if(xy) printf(x=%dn,x);if(xy) prin

6、tf(x=%dn,x);if(yy的值。如果x大于y,表达式的值为1,则调用printf函数输出x的值;否则,如果x小于y,表达式的值为0,则跳过此输出语句继续执行步骤(3);(3).执行第八行的if语句。计算表达式yx的值。如果y大于x,则调用printf函数,输出y的值;否则跳过此输出语句继续执行步骤(4);(4).执行第九行的if语句。计算表达式x=y的值。如果x等于y,则调用printf函数输出字符串x=y和x的值;否则跳过此输出语句继续执行步骤(5);(5).程序结束。8.输入三个整数,分别放在变量a,b,c中,然后把输入的数据重新按由小到大的顺序放在变量a,b,c中,最后输出a,b

7、,c中的值。main()int a,b,c,t;printf(Enter a,b,c:n);scanf(%ld%ld%ld,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(a=%d,b=%d,c=%dn,a,b,c); 注:(1).在这里的if语句其下的语句 是必须要有的,否则其程是不正确的。 (2).在这里并不是将数字进行讨论(数学讨论)的只需要将其表示出来即可。并不是讨论。 (3).这里的if语句没有else语句。在一个语句中可以有if而

8、没有else但不可以有else而没有if 9.输入两个数,分别赋给x和y,输出其中的大数。main()int x,y;printf(Enter x,y:n);scanf(%ld%ld,&x,&y);printf(x=%d,y=%dn,x,y);if(xy)printf(max=x=%dn,x);if(yx)printf(max=y=%dn,y); main()int x,y;printf(Enter x,y:n);scanf(%ld%ld,&x,&y);printf(x=%d,y=%dn,x,y);if(xy) printf(max=x=%dn,x); else printf(max=y=%d

9、n,y);这里对于if语句中是否有else分别作出了程序。10.输入一个数,判断它是否能被3整除。若能被3整除,打印YES;不能被3整除打印NO。main()int x;printf(Enter x:n); scanf(%d,&x);if(x%3=0) printf(YESn,x);else printf(NOn,x);main()int n;printf(Input n: );scanf(%d,&n);if(n%3=0)printf(n=%dYESn,n);else printf(n=%dNOn,n);11.编写程序:根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以

10、下的等级为E,其余每10分为一个等级。main()int x;printf(Enter x:);scanf(%ld,&x);printf(x=%d :,x);switch(x/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);main()int x;printf(Enter x :n);scanf(%ld,&x);printf(x=%dn,x);if(x=90) printf(An);els

11、e if(x=80) printf(Bn);else if(x=70) printf(Cn);else if(x=60) printf(Dn);else printf(En);12.编写程序;输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。13.编写程序:输入一个整数,打印出它是奇数还是偶数。main()int x;printf(Enter x:n);scanf(%ld,&x);printf(x=%dn,x);if(x%2=0) printf(偶数n);else printf(奇数n);14.编写程序:输入a,b,c三个

12、数,打印出最大值。main()int a,b,c;printf(Enter a,b,c:n);scanf(%ld%ld%ld,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);if(ab) if(ac) printf(a=%dn,a);else if(bc) printf(b=%dn,b);else printf(c=%dn,c);15.对于以下函数: X (-5x0)y= x-1 (x=0) x+1 (0 x10)main()double x,y;printf(Please input a number n);scanf(%lf,&x);if(-5x)&(x0)

13、 y=x;if(x=0) y=x-1;if(0 x)&(x10) y=x+1;printf(y=%fn,y);编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。16.编写程序:求1*1+2*2+3*3+n*n直到累加和大于或等于10000为止。main()int i=1,sum=0;while(sum10000)sum=sum+i*i;i=i+1;printf(sum=%d,i=%dn,sum,i);main()int i=1,sum=0;while(sum10000)sum=sum+i*i;i=i+1;pri

14、ntf(sum=%d,i=%dn,sum,i); 此两个程序完全不同。注:while循环的执行过程:(1).计算while后圆括号中表达式的值。当值为非0时,执行步骤(2);当值为0时执行步骤(4)。(亦为1是才循环,0不循环)(2).执行循环一次。(3).转去执行步骤(1)。(4).退出while循环。17.用/4=1-1/3+1/5-1/7+1/9-公式求的近似值,直到最后一项的绝对值小鱼0.000001为止。#includemain()int s;float n,t,pi;t=1.0;pi=0;n=1.0;s=1;while(fabs(t)=1e-6)pi=pi+t;n+=2.0;s=-

15、s;t=s/n;pi=pi*4;printf(pi=%fn,pi);18.用迭代法求方程x=cosx的根,要求误差小于0.000001.#includemain()double x1,x2;x1=0.0;x2=cos(x1);while(fabs(x2-x1)1e-6)x1=x2;x2=cos(x1);printf(x=%fn,x2); 19.计算Fibonacci数列,直到某项大于1000为止,并输出该项的值。main()int f1,f2,f;f1=0;f2=1;do f=f1+f2;f1=f2;f2=f;while(f2=1000);printf(f=%dn,f2);20.编写程序:求1

16、+2+3+100。main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(“%dn”,sum);21.编写程序:计算半径为0.5mm、1.0mm、1.5mm、2.0mm、2.5mm时的圆的面积。main()double r,s,Pi=3.1416; for(r=0.5;r=2.5;r+=0.5) s=Pi*r*r; printf(r=%3.1f,s=%fn,r,s); 22.使用双层for循环打印如下由星号组成的倒三角图形。main()int k,i,j; for(i=0;i4;i+) for(k=1;k=i;k+) printf( ); for

17、(j=0;j7-i*2;j+) printf(*); printf(n); * * * *23.编写程序:找出2100以内的所有素数。#includemain()int k,i,tag; printf(2,); for(i=3;i=100;i+=2) tag=0; for(k=2;tag=0&ksqrt(i);k+) if(i%k=0) tag=1; if(tag=0) printf(%d,i); main()int k,i,tag;for(i=2;i=100;i+)tag=0;for(k=2;k5000) break; printf(s=%d,i=%dn,s,i);25.编写程序:打印所有的

18、四位数使其满足于:千位*个位=十位+百位。main()int i,a,b,c,d;for(i=1000;i=9999;i+)a=i/1000;b=(i-a*1000)/100;c=(i-a*1000-b*100)/10);d=i-a*1000-b*100-c*10;if(a*d)=(c+b) printf(This number is %dn,i); 26.编写程序:求1!+2!+3!+4!,用循环嵌套实现。27.用一角人民币换1分,2分和5分硬币,共有多少种换法?28.已知一首项大于0的等差数列的前4项和为26.前4项的积为880,求这个数列。29.求3个数的最小公倍数。30.打印输出所有的水仙花数。(所谓水仙花数,是指一个三位数,是指一个数,其各位数字的立方和等于该数本身)。31.从键盘输入10整数,求其中的最大值和最小值。32.用冒泡排序法将10个整数从小到大排序。33.在n个数中查找一个数x(顺序查找算法)。34.将一个二维数组行和列的元素互换,存到另一个二维数组中。 1 2 3 1 4 A= 4 5 6 B= 2 5 3 635.有一个4*4矩阵,分别求主对角线元素之和与次对角线元素之和。36.有一个3*4的矩阵,要求编程求出其中值最大的那个元素,以及其所在的行号和列号。37.不借助另外的矩阵,将矩阵a转置。38.输入一个以回车符结束

温馨提示

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

评论

0/150

提交评论