资源描述:
《c语言课程设计--银行存钱》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、红河学院工学院课程设计报告专业:计算机技术与科学年级:11级学号:6姓名:曹永前成绩:批改时间:红河学院工学院编制9说明1、本报告供学生课程设计时使用。2、学生应认真阅读课程设计要求。3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。课程设计目录课程名称:高级语言程序设计序号课程设计名称起止页码
2、36银行存钱9设计任务题目该存多少钱,假设银行一年整存零取的月利息为0.68%。现在某人手上有一笔钱,他打算在今后的十年中每年年底取出500元,到第十年时刚好取完,请算出他存钱时应该存入多少?班级11计科指导教师地点成绩学年2011-2012开始日期结束日期一、问题分析根据这学期所学内容,解决这类问题有多种方法,由于对这些方法都不熟悉,不知道使用哪一种方法更为简便,我打算在这个程序中运用不同方法解决问题,分析比较两种方法,得出两种方法的利弊,方便以后的学习利用.数据分析:1.(倒推法分析)设:年初存款为x,年底连本带息为y则y
3、=x*(1+12*0.0068)即:x=y/(1+12*0.0068)(递推公式)第十年:y=500第九年:y=(500+第十年初的存款)第八年:y=(500+第九年初的存款)…………………………………………第一年:y=(500+第二年初的存款)方法分析:(使用倒推法)第十年初存款x10=(0+500)/(1+12*0.0068)第九年初存款x9=(x10+500)/(1+12*0.0068)9……………………………………………………第一年初存款x1=(x2+500)/(1+12*0.0068)2.(顺序分析)假设第一年存n元
4、,那么年终应当是n=n*(1+0.68%*12)-500;第二年也是n=n*(1+0.68%*12)-500第三年n=n*(1+0.68%*12)-500第四年n=n*(1+0.68%*12)-500………………………………方法分析(递归法)第十年n=n*(1+0.68%*12)-500为零所以n=500/(1+0.68%*12)为第九年底,第十年初的数量第九年初n=(500+第十年初的数量)/(1+0.68%*12)第八年初n=(500+第九年初的数量)/(1+0.68%*12)…………………………………………………………第
5、二年初n=(500+第三年初的数量)/(1+0.68%*12)第一年初n=(500+第二年初的数量)/(1+0.68%*12)9二、设计流程图定义per为年利率,i=0,n=10定义变量k,x=0(初值)输出结果x=(x+500)/(1+0.0068*12)K的值从10—1,for(k=10;k>0;k--)1.倒推法2.递归法结束结束n减1输出结果n=0?a+=500;a=a/(1+per)递归出口是否循环9三、程序代码1.(倒推法)#includevoidmain(){intk;floatx=0;for(
6、k=10;k>0;k--)//k从10开始,只要k>0,执行之后k自减(倒推法)x=(x+500)/(1+0.0068*12);//每一年的存款等于下一年的存款加500再除以(1+0.0068*12)printf("Hemustsave%fatfirst",x);//输出第一次需要存入的金额}2.递归法#include#include#defineper0.0816//银行的年利率,等于月利率0.68%*12voidcount(intn,floata){if(n==0)//如果n等于0
7、,则输出a,递归出口{printf("%f",a);}a+=500;//a=a+500a=a/(1+per);//下一年的存款除以(1+per)等于上一年的count(n-1,a);}voidmain(){floati=0;intn=10;count(n,i);}3.把结果写进文件(倒推法)#include#includevoidmain(){intk;doublex=0;9for(k=10;k>0;k--)//k从10开始,只要k>0,执行之后k自减(倒推法)x=(x+500)/(1
8、+0.0068*12);//每一年的存款等于上一年的存款加500再除以(1+0.0068*12)FILE*fp;fp=fopen("E:\daan1.txt","w");fprintf(fp,"%f",x);fclose(fp);printf("Hemustsave%fat