c语言银行存钱
红河学院工学院
课
程
设
计
报
告
专业:计算机技术与科学
年级: 11 级
学号:6
姓名: 曹 永 前
成绩:
批改时间:
红河学院 工学院编制说 明
1、本报告供学生课程设计时使用。
2、学生应认真阅读课程设计要求。
3、课程设计报告里面的内容要手工填写,以备存档使用(源程序可打印)。
4、课程设计的总评成绩根据课程的性质,按一定比例计入该门课程成绩。
5、课程设计报告中的各模块填写的内容是评分的主要依据,如果不够书写,可以自行添加附页。
6、按规定的时间提交报告给教师评定成绩,由任课教师交到工学院存档。
课程设计目录
课程名称:高级语言程序设计
序号课程设计名称起止页码36银行存钱
设计任务
班级11计科指导
教师地点成绩学年2011-2012开始
日期结束
日期一、问题分析
根据这学期所学内容,解决这类问题有多种方法,由于对这些方法都不熟悉,不知道使用哪一种方法更为简便,我打算在这个程序中运用不同方法解决问题,分析比较两种方法,得出两种方法的利弊,方便以后的学习利用.
数据分析:
1.(倒推法分析)
设:年初存款为x,年底连本带息为y则y=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)
……………………………………………………
第一年初存款x1=(x2+500)/(1+12*0.0068)
2.(顺序分析)
假设第一年存n元,那么年终应当是n=n*(1+0.%*12)-500;
第二年也是n=n*(1+0.%*12)-500
第三年n=n*(1+0.%*12)-500
第四年n=n*(1+0.%*12)-500
………………………………
方法分析(递归法)
第年n=n*(1+0.%*12)-500为零
所以n=00/(1+0.68%*12)为第年底,第年初的数量
第年初n=(00+第年初的数量)/(1+0.%*12)
第年初n=00+第年初的数量)/(1+0.%*12)
…………………………………………………………
第二年初n=(00+第三年初的数量)/(1+0.%*12)
第一年初n=(00+第二年初的数量)/(1+0.%*12)
二、设计流程图
1.倒推法2.递归法
三、程序代码
1.(倒推法)
#include
void main()
{ int k;
float x=0;
for(k=10;k>0;k--) //k从10开始,只要k>0,执行之后k自减(倒推法)
x=(x+500)/(1+0.0068*12);//每一年的存款等于下一年的存款加500再除以(1+0.0068*12)
printf("He must save %f at first\n",x);//输出第一次需要存入的金额
}
2.递归法
#include
#include
#define per 0.0816//银行的年利率,等于月利率0.68%*12
void count(int n,float a)
{
if (n == 0)//如果n等于0,则输出a,递归出口
{
printf("%f\n",a);
}
a += 500;//a=a+500
a = a/(1+per);//下一年的存款除以(1+per)等于上一年的
count(n-1,a);
}
void main()
{
float i = 0;
int n = 10;
count(n,i);
}
3.把结果写进文件(倒推法)
#include
#include
void main()
{ int k;
double x=0;
for(k=10;k>0;k--) //k从10开始,只要k>0,执行之后k自减(倒推法)
x=(x+500)/(1+0.0068*12);//每一年的存款等于上一年的存款加500再除以(1+0.0068*12)
FILE*fp;
fp=fopen("E:\\daan1.txt","w");
fprintf(fp,"%f",x);
fclose(fp);
pri