期末考试C语言答案.doc_第1页
期末考试C语言答案.doc_第2页
期末考试C语言答案.doc_第3页
期末考试C语言答案.doc_第4页
期末考试C语言答案.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

36页8题3小题. 编写一个程序,输入a、b、c三个值,输出其中最大值。 解: mian() int a,b,c,max; printf(“请输入三个数a,b,c:n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(maxb) max=b; if(maxc) max=c; printf(“最大数为:“%d”,max); 82页2题、存款利息的计算。有一千块钱,想存五年。#include#include void main()float r1,r2,r3,r4,r5,p; /银行利率和本息和定义int n; /存款年限int fs=1; /存款方式, fs=1,2,3,4,5printf(请输入当年利率:);scanf(%f,%f,%f,%f,%fn,&r1,&r2,&r3,&r4,&r5);printf(当年利率一年期r1=%fn,二年期r2=%fn,三年期r3=%fn,活期r4=%f,五年期r5=%fn,&r1,&r2,&r3,&r4,&r5);printf(请输入存款方式选择:n,1为一次性存5年n,2先存2年,到期后再存3年n,3先存3年,到期后将本息再存2年n,4为存1年期,到期后本息再存1年期,连续存5次n,5为活期存款,利息每一季度结算一次n);scanf(%dn,&fs);switch(fs)case 1:p=1000*(1+5*r5);printf(一次性存5年本息和p=%fn,p);break;case 2:p=1000*(1+2*r2);p=p*(1+3*r3);printf(先存2年,再本息存3年的本息和p=%fn,p);break; case 3:p=1000*(1+3*r3);p=p*(1+2*r2);printf(先存3年,再本息存3年的本息和p=%fn,p);break;case 4:p=1000*pow(1+r1/4,n);printf(存n次1年期的本息和p=%fn,p);break;case 5:p=1000*pow(1+r4/4,4*n);printf(和息存款本息和p=%fn,p);break;113页10题. 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10% ;利润高于10万元,低于20万元(100000I200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000I400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;4000001000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。 解:计算利润时,要特别注意不同利润的不同提成比例。例如,利润为15万元,其中有10万元按10%的比例提成,另外5万元则按7.5%提成。 (1) 用if语句编程序。 #include main() long i; float bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; /*利润为10万元时的奖金*/ bon2=bon1+100000*0.075; /*利润为20万元时的奖金*/ bon4=bon2+200000*0.05; /*利润为40万元时的奖金*/ bon6=bon4+200000*0.03; /*利润为60万元时的奖金*/ bon10=bon6+400000*0.015; /*利润为100万元时的奖金*/ printf(请输入利润i:); scanf(%ld,&i); if(i=100000) bonus=i*0.1; /*利润在10万元以内按0.1提成奖金*/ else if(i=200000) bonus=bon1+(i-100000)*0.075; /*利润在10万至20万元时的奖金*/ else if(i=400000) bonus=bon2+(i-200000)*0.05; /*利润在20万至40万元时的奖金*/ else if(i=600000) bonus=bon4+(i-400000)*0.03; /*利润在40万至60万元时的奖金*/ else if(i=1000000) bonus=bon6+(i-600000)*0.015; /*利润在60万至100万元时的奖金*/ else bonus=bon10+(i-1000000)*0.01; /*利润在100万元以上时的奖金*/ printf(”奖金是%10.2fn,bonus); 输入4个整数,要求按由大到小的顺序输出。 解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。 #include main() int t,a,b,c,d; printf(请输入4个整数:); scanf(%d,%d,%d,%d,&a,&b,&c,&d); printf(n a=%d,b=%d,c=%d,d=%dn,a,b,c,d); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(ad) t=a; a=d; d=t; if(bc) t=a; b=c; c=t; if(bd) t=b; b=d; d=t; if(cd) t=c; c=d; d=t; printf(排序结果如下:n); printf(%d, %d, %d, %dn,a,b,c,d); 141页11题.一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高? main() int i,n;double h=100,s=100; scanf(%d,&n); for(i=1;i=n;i+) h*=0.5;if(i=1) continue;s=2*h+s; printf(h=%f,s=%fn,h,s); 140页3题、输入两个正整数m和n,求其最大公约数和最小公倍数。 main() long m,n,i=1,j,s; scanf(%ld,%ld,&m,&n); for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); printf(s=%ld,j=%ldn,s,j); 140页6题、求 ,(即求1!+2!+3!+4!+5!+20!) main() int n,i=1;long sum=0,s=1; scanf(%d,&n); while(i=n) s=s*i;sum=sum+s;i+; printf(sum=%ldn,sum); 168页6题、打印出以下杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 main() static int m,n,k,b1515; b01=1; for(m=1;m15;m+) for(n=1;n=65&str0i=97&str0i=48&str0i=57) l+; else if(str0i=32) m+; else n+; printf(Daxie Xiaoxie Shuzi Kongge Qitan); printf(%5d %7d %5d %6d %4dn,j,k,l,m,n); 218页11题、写一函数用起泡法对输入的10个字符按由小到大的顺序排列。 int paixu(x) int x; int i,j,t; for(j=1;j10;j+) for(i=0;ixi+1) t=xi+1;xi+1=xi;xi=t; main() int y10;int i; for(i=0;i10;i+) scanf(%d,&yi); paixu(y); for(i=0;i10;i+) printf(%5d,yi); printf(n); 112页6题、有一函数: 写一程序,输入x值,输出y值。 解: #include main() int x,y; printf(输入x:); scanf(%d,&x); if(x1) /* x1 */ y=x; printf(x=%3d, y=x=%dn,x,y); else if (x10) /* 1x-10 */ y=2*x-1; printf(x=%3d, y=2*x-1=%dn,x,y); else /* x10 */ y=3*x-11; printf(x=%3d, y=3*x-11=%dn,x,y); 292页15题、有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。 解: #include struct student char num10; char name8; int score5; float ave; stu4; main() int I,j,sum; FILE *fp; For(I=0;I4;I+) printf(“n input score of student%d:n”,I+1); printf(“NO.:”); scanf(“%s”,stui.num); printf(“name:”); scanf(“%s”,); sum=0; for(j=0;j5;j+) printf(“score %d :”j+1); scanf(“%d”,&stui.scorej); sum+=stui.scorej; stui.ave=sum/5.0 fp=fopen(“stud”,”w”); for(I=0;I4;I+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(“File write errorn”); fclose(fp); fp=fopen(“stud”,”r”); for(I=0;I4;I+) fread(&stui,sizeof(struct student),1,fp); printf(“%s,%s,%d,%d,%d,%6.2fn”,stui.num,,stui.score0, stui.score1, stui.score2 ,score3,stui.ave); 292页21题、用指向指针的指针方法对N个整数派讯并输出,要求将派讯单独写成一个函数,将N个整数在主函数中输入,最后在主函数中输出。#define N 10void shift(p,x)float *p;int x;float aN,*q,*o;int i;o=a;q=p;for(i=0;i=q;p-)*p=*(p-x);for(i=0;ix;i+)*(q+i)=*(o+i);return;main()float shuzhuN,*u,*v;int h,i;u=v=shuzhu;scanf(%f,&h);for(;uv+N;u+)scanf(%f,u);shift(v,h);for(u=v;uv+N;u+)printf(%.2f ,*u);printf(n);求ax2+bx+c=0的两根#include#includevoid main()double a,b,c,x1,x2,p,q,w;scanf(a=%lf,b=%lf,c=%lf,&a,&b,&c);p=b*b-4*a*c;if(p0)q=-b+sqrt(p); w=-b-sqrt(p);x1=q/(2*a);x2=w/(2*a);printf(x1=%lf,x2=%lfn,x1,x2);elseprintf(此方程无实根!);写出一个大写字母显示对应的小写字母#includeint main()char d

温馨提示

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

评论

0/150

提交评论