![c课程设计实践报告_第1页](http://file4.renrendoc.com/view/2859183288af5c52ae69c63e3ee34f59/2859183288af5c52ae69c63e3ee34f591.gif)
![c课程设计实践报告_第2页](http://file4.renrendoc.com/view/2859183288af5c52ae69c63e3ee34f59/2859183288af5c52ae69c63e3ee34f592.gif)
![c课程设计实践报告_第3页](http://file4.renrendoc.com/view/2859183288af5c52ae69c63e3ee34f59/2859183288af5c52ae69c63e3ee34f593.gif)
![c课程设计实践报告_第4页](http://file4.renrendoc.com/view/2859183288af5c52ae69c63e3ee34f59/2859183288af5c52ae69c63e3ee34f594.gif)
![c课程设计实践报告_第5页](http://file4.renrendoc.com/view/2859183288af5c52ae69c63e3ee34f59/2859183288af5c52ae69c63e3ee34f595.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c++课程设计实践报告班级:83121姓名:张弛学号:XX1000491题目一、题目描述:已知银行整存整取存款不同期限的月息利率 (采用复利 方式,即利滚利)分别为%期限一年%期限二年月息利率=%期限三年%期限五年%期限八年要求输入存钱的本金和期限(以整数年为单位 ),求到期时能从银行 得到的利息与本金的合计。提示:可以用嵌套的 if-else结构或switch结构实现,核心函数 pow(1+月利率 ,月份)。请思考年份是四、六、七或八年以上的情况。设计思路:(一)使用switch选择语句对应年份(二)明确核心函数pow是计算复利的 (例如: x的n次方);由于是以年为计算期限的,而所给的利率是月利率,所以计算时 应该在年的基础上乘以 12;(三)复利计算就是一种幂运算, I=p*(1+i)%,本金和利率都是变动的 (四)在除了 1、2、3、5和8年之外的其他年份中,要注意“就低 不就高”的原则,尤其是在 8年之后,也是套用期限八年的利率。附源程序如下: #include#includevoidmain(){intyears;floatcapital,sum;
scanf("%f%d",&capital,&years);switch(years){case1:sum=capital*pow(1+*,12);break;case2:sum=capital*pow(1+*,24);break; case3:sum=capital*pow(1+*,36);break;case4:sum=capital*pow(1+*,48);break;case5:sum=capital*pow(1+*,60);break;case6:sum=capital*pow(1+*,72);break; case7:sum=capital*pow(1+*,84);break; case8:sum=capital*pow(1+*,96);break;default:sum=capital*pow(1+*,12*years); }printf("%f",sum);}题目二、题目描述:简单计算器。用switch语句编写一个程序计算表达式: data1opdata2的值。其中op为运算符+、-、*、/。设计思路:(一)明确计算器是怎样进行计算的 ;(二)细节,比如很多地方需要分号, 在遇到字符时,我们应该用‘’ ,而不是“”;(三Switch语句主要用于多switch分支选择,此题有+、-、*、/,这就是选择。使用每个case对应+-*/符号程序涉及到至switch少三个量,运算符 op和两个数字 ;先让用户输入两个数字和运算符,两个数字的计算在后面的程序中用swith数字和运算符,两个数字的计算在后面的程序中用swith结构运行。运行效果截图:附源程序如下:#includeintmain(){floatdata1,data2,c;charop;printf(”请输入表达式中两个数字 datal和data2");//打印scanf("%f%c%f",&data1,&op,&data2);//输入printf(“请输入运算符+、-、*、/");//打印switch(op)//switch(){casestick:break;}这个是个选择结构如果OP=stick则执行这一句如果没有则执行default后面的语句{case'+':c=data1+data2;break;case '-':c=data1-data2;break; case'*':c=data1*data2;break; case'/':c=data1/data2;break;default:printf("输入错误");break;}printf("%f",c);return0;}题目三题目描述:编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。提示:①用do-while语句实现。②二分法的计算步骤: (1)准备计算f(x)在有根区间端点处的值 f(a),f(b)(2)二分计算f(x)在区间中点(a+b)/2处的值f(3)判断若f=0,则即是根,计算过程结束。否则,检测: A.若f与f(a)口号,则根位于区间内,这时以(a+b)/2代替b;B.若f与f(a)同号,则根位于区间内, 这时以(a+b)/2代替a;反复执行步骤 2和3,直到区间长度缩小到允许的误差范围之和3,直到区间长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根 设计思路:(一)二分法是指在整个算法中,让计算值无限趋近于根的值,利用数学知识可知,当了两个点的结果异号时,点(a+b)/2即为所求的根 设计思路:(一)二分法是指在整个算法中,让计算值无限趋近于根的值,利用数学知识可知,当了两个点的结果异号时,函数的根就在这两个数之间,利用二分法可以无限的把根的范围缩小,直到可以确定为止(二)do-while是循环语句,先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(真)时,返回然后判别表达式,当表达式的值为非零(真)时,返回重新执行循环语句, 如此反复,直到表达式的值等于 0(假)为止才结束。 (三)Voidmain()是声明函数,并且是对主函数的声明。题目所 给的范围是(-10,10),因此在声明函数中定义一个a和b来代替区间的范围,而用c来代指中间指也是最后的结果,在这个程序中 a、b、c都是随着范围不断变化的变量。如果 (-10,10)的范围过大,就需要循环语句来缩小区间范围, 即a=c或b=c。当函数值在(-10,10)中任意一点取得 0时,就正是我们所要的结果。循环条件是当区间a要的结果。循环条件是当区间a和b的函数值小于精度运行效果截图:附源程序如下: #include""floatf(floatx){floaty;y=2*x*x*x-4*x*x+3*x-6;returny;}voidmain(){floata=-10,b=10,c;do{c=f((a+b)/2);if(c==0)break;if(c*f(a)>0)a=c;elseb=c;}while(f(b)*f(a) 题目四 题目描述:编写程序,给定一个整数 i,请求出另一个整数 j,使i和j在
用8用8位二进制表示时互为逆序。例如:给定i=3时,应得到j=192(3的二进制为:00000011,192的二进制为11000000)。提示:①十进制整数转换为二进制整数用“除2求余”法。②二进制整数转换为十进制整数用 “按权相加”法。设计思路:(一)二进制整数转化为十进制整数用“按权相加”法(二)二十进制整数转化为二进制整数用“除 2求余”,用&转化。(三)运算符:>是指右移一位,a是指b向右移a位,左移一位相当于乘 2右移1位相当于除2(四)在交换时,用的是中间法运行效果截图:附源程序如下:#include""voidmain(){inti,j,s=1,a;printf(“请输入一个整数i:");scanf("%d",&i);for(j=0;jprintf("%d",(a>1)|(a>>3)|(a>>5)|(a>>7));}题目五题目描述:编写程序,抓交通肇事犯。一辆卡题目五题目描述:编写程序,抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相 同的;乙说:牌照的后两位数字是相同的,但与前两位不同 ;丙是位数学家,他说:四位的车号刚好是一个整数的平方。根据以上线索求 出车号。 提示:①按照题目的要求,造出一个前两位数相同、后两位数相同且相互
间又不同的整数,然后判断该整数是否是另一个整数的平方。②用穷举法解此题。穷举法是最简单、最常见的一种程序设计方法,它充分利用了计算机处理的高速特征。穷举法的关键是要确定穷 举的范围,既不能过分扩大穷举的范围,也不能过分缩小穷举的或有可能遗漏正确的结果而也不能过分缩小穷举的或有可能遗漏正确的结果而设计思路:(一)1111到1199在9911这样穷举判断是否一个范围,否则程序的运行效率会很低,产生错误。数的平方则是将这个数开方取整再取平方是否还是原来的数(二)此题需要满足三个条件:①前两个数相同,后两个数相同;口前后两数分别不相同 ;③这个数是一个整数的平方。需要每个条件都 满足,if才为真。(三)主要思路是穷举。穷举是指在适当的范围内举出一个数。 运行效果截图:附源程序如下: #includevoidmain(){inta,b;for(a=32;a {b=a*a;if(b/1000==b%1000/100b%100!=(b/1000)*10+b%1000/100)printf("Thelicenseplateis:%d",b);}}&&b%100/10==b%10&&题目六题目描述:从终端输入实数ex=1+x+x2/2!+x3/3!+?+xn/n!的值。设计思路:先输入一个x的值;再设计一个子函数, 计算1!,2!,3!?n!的值;之后用sum函数,和pow函数处理分子,用累加的方式进行分子计算,并形成等式 ;最后输出结果。 x,用递推法求附源程序如下:#include""intf(intx,intn){inti,m=0;for(i=0;ifor(i=0,s=0;f(x,i)题目七题目描述:打印出以下的杨辉三角形(要求打印出10行)。11112113311464115101051??????设计思路:(一)二维数组主要用于处理多行的问题,而且第一行在数组之中是 第0行。(二)杨辉三角有一个明显的特点:每一行的最后一个数字与第一个 数是相同的,此外,下(三)一行的第二个数是由上一行的第一个数和第二个数相加之和, 以此类推。定义指针是为了让整个程序不那么复杂。 运行效果截图:附源程序如下:#includeintmain(void){inta,(*p)=a,i,j;for(i=0;i *(*(p+i)+0)=1;*(*(p+i)+i)=1;}for(i=2;i题目八题目描述:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最①一个二维数组可能有鞍点个。①一个二维数组可能有鞍点个。(1)二维数组有鞍点: 980也可能没有鞍点,若有鞍点,则只有一②准备两组测试数据:20590-602104096189-310198020590-6021040189(2)二维数组没有鞍点:98020590-6021040189196-310174554156③用scanf函数从键盘输入数组各元素的值,检查结果是否正确。如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用scanf函数。请同学们修改程序以实现之。设计思路:(一)先找出一行中值最大的元素,然后看一个二维数组最多有一个它是不是该列中的最小值,由于一个二维数组最多有一个鞍点,所以如果是则鞍点存在且它就是鞍如果不是,则再找下一行的最的最大数都不是鞍点,则此数组无鞍点令a最大赋值给maxi,在点,输出该鞍点大数,以此类推。如果每一行(二)在程序中,先for循环的比较中,把符合条件的行的最大值赋给maxi,将每一次比较后的最大的列数赋 值给 maxj,从而找出 i行最大的那个。 口假设那个数就是鞍点,将最大数和同列的数值相比,如果maxj不是最小的,则不是鞍点,继续找。 (三)引入一个参数flag=1,若不存在鞍点则 flag为0,0000点则flag依旧为1运行效果截图:附源程序如下:#include""#defineS80#defineT80voidmain(){intm,n,i,j,t,maxh,maxl,flag,a;printf(“请输入二维数组的行数m和列数n:");scanf("%d%d”,&m,&n);printf(“请输入二维数组的各个元素:");for(i=0;ia)t=a;maxh=i;maxl=j;}for(i=0;ia=%d",maxh,maxl,a);}题目九题目描述:某班期终考试科目为高数 MT、英语EN和物理 PH,0 30个人参加考试。为评定奖学金,要求统计并输出一个表格,表格内容包括学好、各科分属、总分和平均分,并标出3门口均在90分以上者(该栏标志输出为 Y,否则为N),表格形式如下: NOMTENPHSUMV>90123978792276929291902739190818225384 NYN#include""voidmain()设计思路:由于是对 30个学生的数据进行输入与统计,所以建立二维数组,根据各位置的条件来定义其内容, 第8个数据是字符型数据, 所以另设一数组进行存储,最后在将数据整合输出。附源程序如下:#include""voidmain(){inti,j,sum,flag,a;printf(“请输入 30个考生的三科成绩:");for(i=0;i90)flag=1;elseflag=0;}a=sum;a=sum/3;if(flag=1)a='Y';elsea='N';}printf("NOMTENPHSUMV>90");for(i=0;i}题目十 题目描述下面是一个 5*5阶的螺旋方阵,试编程打印出此形式的 n*n(n设计思路:定义一个 n*n维数组存放该方阵,m为该方阵的圈数,一个大循环中嵌套了四个小循环,每一圈为一个大循环,第一个小循环按顺序写出第一行的数,第二个小循环按 顺序写出最后一列的数,第三个小循环按顺序写出最后一行的数, 第四个小循环按顺序写出第一列的数,再进行第二次大循环,循环完毕后再进行循环输出数组中的 n*n个数,该螺旋方阵就出来了。附源程序如下: #include""voidmain(){inti,j,k=0,m,n,a;printf(“请输入方阵行列数 n(nk++;
fora=k;}for(j=i+1;j=i;j--){k++;a=k;}(j=n-i-2;j>=i+1;j--){k++;a=k;}}for(i=0;iprintf("%5d",a);printf("");}}附:实习总结与心得体会for经过C语言实习,让我加深了对 C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实习,逐渐积攒了一些经验,有些错误可以很快就过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实习,逐渐积攒了一些经验,有些错误可以很快就出来。这次实习有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对语言有了浓厚的兴趣和更深层的认识。C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,理很清楚,出来。这次实习有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对语言有了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2028年中国祛湿剂行业市场发展监测及投资战略规划研究报告
- 驾驶员申请书
- 医学高级职称正高《普通外科学》(题库)模拟试卷一
- 皮肤美白技术的发展与市场需求分析
- 2025年山东青岛市政空间开发集团有限责任公司招聘笔试参考题库附带答案详解
- 慈善救助个人申请书
- 气候变化对农业生态系统的挑战及应对策略研究
- 未来电影产业的商业模式与市场趋势研究
- 湖南省长沙市2024年七年级《语文》上册期末试卷与答案(A卷)
- 成都市武侯区2022年七年级《语文》下册期末试卷与参考答案
- 地震应急救援培训课件
- 《汽车电气设备构造与维修》 第4版 课件 第3、4章 电源系统、发动机电器
- 《南京瞻园赏析》课件2
- 2023年南京市鼓楼区建宁路街道安监办招聘专职安全员考试真题及答案
- 《有责任有担当青春才会闪光》教学课件-2023-2024学年高一下学期爱国主义教育主题班会
- 幼儿中班故事《猪太太生宝宝》课件
- 2021年湖南省公务员考试行政职业能力测验真题
- 井工煤矿中长期防治水规划编制细则
- 高等数学课件第一章函数与极限
- 设备使用手册(范例模板)
- 转让店铺定金合同范文
评论
0/150
提交评论