版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计 学号:20131002585 班级:052132班 姓名:某某某 指导老师:刘然 上机地点:北区315机房1.已知银行整存整取存款不同期限的月息利率(采用复利方式,即利滚利)分别为0.63%期限一年0.66%期限二年月息利率=0.69%期限三年0.75%期限五年0.85%期限八年要求输入存钱的本金和期限(以整数年为单位),求到期时能从银行得到的利息与本金的合计。提示:可以用嵌套的if-else结构或switch结构实现,核心函数pow(1+月利率,月份)。请思考年份是四、六、七或八年以上的情况。#include<stdio.h>#include<math.h&
2、gt;double fun(int m,double n,double a)/接受三个参数,m为年份,n为月利率,a为本金/返回m年后的本息和double tem;tem=pow(n+1,m*12);return a*tem;int main(void)int n;double m;printf("please input the years and the moneysn");scanf("%d,%lf",&n,&m);while(n>0)/n为当前剩余年数,n为零跳出循环if(n>=8)/保证最大利息,从最长存储年份开始检
3、测m=fun(8,0.0085,m);/更新本金n=n-8;/更新年份else if(n>=5)m=fun(5,0.0075,m);n=n-5;else if(n>=3)m=fun(3,0.0069,m);n=n-3;else if(n>=2)m=fun(2,0.0066,m);n=n-2;else if(n>=1)m=fun(1,0.0063,m);n=n-1;printf("the Principal and interest is %.3lfn",m);return 0;2 .简单计算器。用switch语句编写一个程序计算表达式:data1 o
4、p data2的值。其中op为运算符+、-、*、/。#include<stdio.h>int main(void)double data1,data2,temp;char op;scanf("%lf%c%lf",&data1,&op,&data2);switch(op)case '+' :temp= data1+data2;break;case '-' :temp= data1-data2;break;case '*' :temp= data1*data2;break;case '/
5、' :temp= data1/data2;break; printf("%.3lf%c%.3lf=%.3lfn",data1,op,data2,temp);return 0;3.编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。提示:用do-while语句实现。二分法的计算步骤:准备 计算f(x)在有根区间a,b端点处的值f(a),f(b)二分 计算f(x)在区间中点(a+b)/2处的值f(a+b)/2判断若f(a+b)/2=0,则即是根,计算过程结束。否则,检测:若f(a+b)/2与f(a)异号,则根位于区间a,(a+b)/2内,这时
6、以(a+b)/2代替b;.若f(a+b)/2与f(a)同号,则根位于区间(a+b)/2,b内,这时以(a+b)/2代替a;反复执行步骤2和3,直到区间a,b长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根。#include<stdio.h>#define abs(a,b) (a)-(b)>0?(a)-(b):(b)-(a) /定义宏函数实现求绝对值double f(double x)return 2*x*x*x-4*x*x+3*x-6 ; /求f(x)int main(void)double a,b,m;a=-10.0;b=10.0;m=(a+b)/2;whi
7、le(abs(a,b)>0.0001)/当精度满足要求时跳出/二分法解方程if(f(m)=0)break;/求得解时跳出printf("x=%.5lft|a-b|=%.5lfn",m,abs(a,b);/输出当前x值,以及|a-b|if(f(m)*f(a)>0)a=m;elseb=m;m=(a+b)/2;printf("the answer is %.5lfn",m);return 0;4.编写程序,给定一个整数i,请求出另一个整数j,使i和j在用8位二进 制表示时互为逆序。例如:给定i=3时,应得到j=192(3的二进制为:00000011
8、,192的二进制为11000000)。提示:十进制整数转换为二进制整数用“除2求余”法。二进制整数转换为十进制整数用“按权相加”法。#include<stdio.h>#include<math.h>int main()int x,i,j;scanf("%d",&x);int array8=0,tem8=0;/用来存提取出来的0或1for(i=0;x>0;i+)/转化为2进制temi=x%2;/对2求余x=x/2;for(j=7;j>=0;j-)printf("%d",temj);/输出原数的二进制printf(
9、"n");for(j=7,i=0;i<8;i+,j-)arrayj=temi;/把二进制数反转for(j=7;j>=0;j-)/输出反转后的二进制printf("%d",arrayj);printf("n");x=0;for(i=7;i>=0;i-)/二进制转化为十进制if(arrayi)x=x+pow(2,i);/pow完成求2的i次方printf("%dn",x);return 0;5.编写程序,抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的
10、一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。根据以上线索求出车号。提示:按照题目的要求,造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。用穷举法解此题。穷举法是最简单、最常见的一种程序设计方法,它充分利用了计算机处理的高速特征。穷举法的关键是要确定穷举的范围,既不能过分扩大穷举的范围,也不能过分缩小穷举的范围,否则程序的运行效率会很低,或有可能遗漏正确的结果而产生错误。#include<stdio.h>#include<math.h&
11、gt;int main()int i,tem=0;for(i=0;tem<10000;i+)/使tem为i的平方,满足四位的车号刚好是一个整数的平方tem=i*i;if(tem/1000!=(tem%1000)/100)continue;/前两位不同。passif(tem%1000)/100=(tem%100)/10)continue;/第二位与第三位相同。passif(tem%100)/10!=tem%10)continue;/后两位不同。passprintf("%dn",tem);/输出符合要求的结果。return 0;6.用递推法求ex=1+x+x2/2!+x3
12、/3!+xn/n!的值。#include<stdio.h>int pow(int x, int n);/求x的n次方int f1(int n);/求n的阶乘int main(void)int x, n;double ex = 1;scanf("%d,%d",&x,&n);for (int i=1; i<=n; i+)ex += pow(x, i) / (f1(i) * 1.0); printf("%lfn",ex); return 0;int f1(int n)int s = 1;for (int i=2; i<=
13、n; i+) s *= i;return s;int pow(int x, int n)int s = 1;for (int i=1; i<=n; i+)s *= x;return s;7.打印出以下的杨辉三角形(要求打印出10行)。11 11 2 1 1 3 3 11 4 6 4 11 5 10 10 5 1 提示:用二维数组实现。关键语句:aij=ai-1j-1+ai-1j#include <stdlib.h> int main() const int n=11; int ann; /数组设为11行 11列,0行0列不用 int i,j; for(i=1;i<n;i
14、+) /每一行的第一个数和最后一个数都为1 ai1=1; aii=1; for(i=3;i<n;i+) /从第三行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列两数之和 for(j=2;j<=i-1;j+) aij=ai-1j+ai-1j-1; printf("杨辉三角为:n"); for(i=1;i<n;i+) for(j=1;j<=i;j+) printf("%4d",aij); printf("n"); /i增1 换行return 0; 8.找出一个二维数组的“鞍点”,即该位置上的元
15、素在该行上最大,在该列上最小。提示:一个二维数组可能有鞍点也可能没有鞍点,若有鞍点,则只有一个。准备两组测试数据:二维数组有鞍点:9802054090-60961210-310189二维数组没有鞍点:9802054090-601961210-31018945541567用scanf函数从键盘输入数组各元素的值,检查结果是否正确。如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请同学们修改程序以实现之。#include <stdio.h>#include <stdlib.h>int main()int i,j,k,m,n,maxh,ma
16、xl,sign,a8080;FILE *fp;fp=fopen("测试.txt","r");printf("请输入数组的行数和列数是:n");scanf("%d%d",&m,&n);printf("请输入该数组:n");for(i=0;i<m;i+)for(j=0;j<n;j+) fscanf(fp,"%d",&aij);fclose(fp);fp=fopen("结果.txt","w+");print
17、f("数组为:n");for(i=0;i<m;i+) for(j=0;j<n;j+) printf("%5d",aij); fprintf(fp,"%5d",aij); printf("n"); fprintf(fp,"n");for(i=0;i<m;i+)maxh=i;maxl=0;sign=1;for(j=0;j<n;j+)if(amaxhmaxl<aij) maxl=j;for(k=0;k<m;k+)if(amaxhmaxl>akmaxl) sig
18、n=0;break;if (sign=1) break;if (sign=1) printf("鞍点a%d%d是 %dn",maxh,maxl,amaxhmaxl);fprintf(fp,"鞍点a%d%d是 %dn",maxh,maxl,amaxhmaxl);else printf("没有鞍点n"); fprintf(fp,"没有鞍点n");fclose(fp);return 0;程序截图:测试数据截图:输出文件截图9.某班期终考试科目为高数MT、英语EN和物理PH,有30个人参加考试。为评定奖学金,要求统计并输出
19、一个表格,表格内容包括学好、各科分属、总分和平均分,并标出3门课均在90分以上者(该栏标志输出为Y,否则为N),表格形式如下:NOMTENPHSUM V>901 97 87 92 276 92 N2 92 91 90 273 91 Y3 90 81 82 253 84 N.#include <stdio.h>int main()int i,j,sum,flag,a307;FILE *fp;fp=fopen("测试.txt","r"); for(i=0;i<30;i+) ai0=i+1;flag=1; for(sum=0,j=1;j
20、<4;j+) fscanf(fp,"%d",&aij); sum+=aij; if(aij<90) flag=0;ai4=sum;ai5=sum/3;if(flag=1) ai6='Y'else ai6='N' fclose(fp);fp=fopen("成绩.xls","w+"); printf("NO MT EN PH SUM V >90 n");fprintf(fp,"NOtMTtENtPHtSUMtVt>90n"); for(
21、i=0;i<30;i+)for(j=0;j<6;j+)printf("%-5d",aij);fprintf(fp,"%dt",aij);printf("%cn",ai6);fprintf(fp,"%cn",ai6);fclose(fp);return 0;程序运行截图:测试数据截图:输出文件截图:10.下面是一个5*5阶的螺旋方阵,试编程打印出此形式的n*n(n<10)阶的方阵(顺时针旋进)。12345161718196152425207142322218131211109提示:用二维数组实现。#
22、include <stdio.h>int main() int i, j, k = 0, m, n,a1010; printf("请输入方阵行列数n(n<10):n"); scanf("%d",&n); if(n%2=0) m = n / 2; else m = n / 2 + 1; for(i=0;i<m;i+) for(j=i;j<n-i;j+)/第i行自左到右 k+; aij=k; for (j=i+1;j<n-i;j+)/ 第j列自上到下 k+; ajn-i-1=k; for (j=n-i-2;j>
23、;=i;j-) /第n-i-1行自右到左 k+; an-i-1j =k; for (j=n-i-2;j>=i+1;j-) / 第i列自下到上 k+; aji=k; for (i=0;i<n;i+) for (j=0; j<n;j+) printf("%5d", aij); printf("n"); return 0;歌星大奖赛要求:(1)在歌星大奖赛中,有N个评委为参赛者打分,分数为1100。选手得分为:去掉一个最高分,去掉一个最低分,剩下n-2个分数的均值。编程实现。(2) 同时对评委评分进行裁判。找出n个评委中最公平和最不公平的评委
24、。(与平均分差距越小的评委越公平。)#include <stdio.h>#define abs(a,b) (a)>(b)?(a)-(b):(b)-(a)int main() int i,tem;int integer,average,sum,max,min,max1,min1;int a11;max=-32768;min=32767;sum=0;for(i=1;i<=10;i+)printf("Input number %d=",i);scanf("%d",&integer);/*输入评委分数*/ai=integer;/*
25、将分数以数组的形式储存*/sum+=integer;/*分数进行累加*/if(integer>max)max=integer;/*找出最大值*/if(integer<min)min=integer;/*找出最小值*/average=(sum-max-min)/8;/*求得平均值*/printf("Canceled max score:%dnCanceled min score:%dn",max,min);printf("Average score:%dn",average);/*输出最大值、最小值和平均值*/min1=32767;for(i=
26、1;i<=10;i+)tem=abs(ai,average);if(tem<min1)min1=tem;/*求得最接近平均分分数与平均分之间的差值*/for(i=1;i<=10;i+)tem=abs(ai,average);if(tem=min1)printf("With evenly divides equally the closest score is:%dn",ai);printf("the fairest appraisal committee is number:%dn",i);/*求出所有等于最接近差值的分数和评委编号*/
27、max1=-32767;for(i=1;i<=10;i+)tem=abs(ai,average);if(tem>max1)max1=tem;/*求得远离平均分分数与平均分之间的差值*/for(i=1;i<=10;i+)tem=abs(ai,average);if(tem=max1)printf("With average minute phase difference biggest score is:%dn",ai);printf("the unfairest appraisal committee is number:%dn",i)
28、;/*求出所有等于最远离差值的分数和评委编号*/return 0;运行截图成绩管理系统要求:每个学生的记录包括:学号、姓名、数学、英语、物理成绩,默认以学号排序存放。以文件存储学生记录。将允许操作分为六种,以A/B/C/D/E/F为标志,设置菜单操作。A:插入新的学生记录B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生总成绩。(4)分别按学号、单科成绩、总成绩输出全班成绩表(到文件)。#include<stdio.h>#include<string.h>#include<stdlib.h>#include<co
29、nio.h>struct student char num10; char name12; int mt,en,ph,sum,ave; stu20;int k=0;void input();void outputgrade();void change();void del();void allgrade();void paixu();void end();void main()int a; do printf("ttttn"); printf("tttt学生成绩管理系统n"); printf("n"); printf("
30、;ttt-nn"); printf("t 1.插入新的学生记录n"); printf("t 2.修改学生记录n"); printf("t 3.删除学生记录n"); printf("t 4.显示学生成绩和总分n"); printf("t 5.浏览全班成绩n"); printf("t 6.退出nn"); printf(" 输入你要操作的序号 : "); scanf("%d",&a); switch(a) case 1:pr
31、intf("n");input();break; case 2:printf("n");change();break; case 3:printf("n");del();break; case 4:printf("n");allgrade();break; case 5:printf("n");paixu();break; case 6:printf("n");end();exit(0);break; default:printf("nThe choice is b
32、etween 1 to 6.n"); while(a!=0); void input() char ch20;printf("n输入学生信息:n");do printf("t学号t姓名tmttentphn");scanf("%s%s%d%d%d",stuk.num,,&stuk.mt,&stuk.en,&stuk.ph);stuk.sum=stuk.mt+stuk.en+stuk.ph;stuk.ave=stuk.sum/3;k+;printf("n如要继续,请输入学生信息
33、(y/n): ");scanf("%s",ch); while(strcmp(ch,"y")=0|strcmp(ch,"Y")=0); outputgrade();void outputgrade() int i; printf(" 学生信息是:n"); for(i=0;i<k;i+) printf("t%s t%s t%d t%d t%d t%d t%d",stui.num,,stui.mt,stui.en,stui.ph,stui.sum,stui.ave)
34、; printf("n"); void end() int i;FILE *p;p=fopen("xinxi.txt","w+"); fprintf(p,"t学号t姓名tmttentphtsumtaven"); for(i=0;i<k;i+) fprintf(p,"t%s t%s t%d t%d t%d t%d t%d",stui.num,,stui.mt,stui.en,stui.ph,stui.sum,stui.ave); fprintf(p,"n"
35、;); fclose(p);void change()int i;char a20; printf("n输入你要修改的学生学号:"); scanf("%s",a); for(i=0;i<k;i+) if(strcmp(stui.num,a)=0) printf("n输入学生信息:n");printf("t学号t姓名tmttentphn");scanf("%s%s%d%d%d",stuk.num,,&stuk.mt,&stuk.en,&stuk.ph);stuk.sum=stuk.mt+stuk.en+stuk.ph;stuk.ave=stuk.sum/3; outputgrade();void del()int i,j;char c20; printf("n输入你要删除的学生学号 :n"); printf(&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省药品采购制度
- 洗煤厂采购制度模板
- 海沧区采购管理制度
- 消防工程采购制度
- 漳州市政府采购验收制度
- 火电厂燃煤采购管理制度
- 焊接工厂采购管理制度
- 煤矿采购管理制度及流程
- 物业公司物资采购制度
- 物业食堂采购管理制度
- 2026年中国农业银行招聘考试笔试试题(含答案)
- 2025学年3 不懂就要问教案
- 中石化油品采购制度规定
- 2026年山东省新动能基金管理有限公司校园招聘笔试模拟试题及答案解析
- 2026江苏南通市苏锡通科技产业园区消防救援大队消防文员招录2人笔试模拟试题及答案解析
- 清醒俯卧位通气护理专家共识
- CB/T 462-1996通风栅
- 糖蛋白与蛋白聚糖优秀课件
- 苏教版六年级科学下册单元测试卷及答案(全册)
- 火电工程项目建设程序和内容课件
- 桃树优质丰产栽培技术培训课件
评论
0/150
提交评论