0316 复利计算总结(0330 更新)
1.客户说:帮我开发一个复利计算软件。
按照这个要求完成了。
演示。
计算:本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30
客户提出:
2.如果按照单利计算,本息又是多少呢?
3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?
完成23功能,并成功PUSH到github上。
截止时间:3.12晚11点之前
记得更新进度条。
另外,是否预感到客户会有进一步的要求,而在下次会面演示之前有所准备呢?
客户又想:
4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢?
5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?
6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?
7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应?
相互观赏程序运行情况。
8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)
名称:复利计算
使用语言:c语言。
工具:VC++。
1: 预计完成时间(小时):0.5 实际用时(小时):0.3 预计工作量(代码行数): 45 实际工作量:30
2,3: 预计完成时间(小时):2 实际用时(小时):2.5 预计工作量(代码行数): 100 实际工作量:110
4,5,6: 预计完成时间(小时):2 实际用时(小时):4 预计工作量(代码行数): 140 实际工作量:125
8 预计完成时间(小时):1 实际用时(小时):0.5 预计工作量(代码行数): 15 实际工作量:10
提交至github地址:https://github.com/caijinghang666/first-code.git
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> double p ; //现值 double f ; //终值 double i ; //利率 int n; //周数 int m; int j; window() //进入界面 { printf(" ╔══════════════╗\n"); printf(" ║ ║\n"); printf(" ║ 欢迎使用~ ║\n"); printf(" ║ ║\n"); printf(" ║ ║\n"); printf(" ║ ║\n"); printf(" ║ ——单复利查询系统 ║\n"); printf(" ║ ║\n"); printf(" ║ ║\n"); printf(" ╚══════════════╝\n\n\n\n\n"); system("pause"); } int menu() //计算选择界面 { char c; do{ system("cls"); printf("\t ╭──────╮\n"); printf("\t│1.单利查询 \t│\n"); printf("\t│2.复利查询 \t│\n"); printf("\t│0.退出程序 \t│\n"); printf("\t╰───────╯\t\n"); printf("\t 请你选择查询方式(0~2): "); c=getchar(); }while(c<'0'||c>'2'); return (c-'0'); } void danlia() //求终值(单利) { printf("\n\t请输入现值:"); scanf("%lf",&p); if(p>0) { printf("\t请输入利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数:"); scanf("%d",&n); if(n>0) { f=p*i*n+p; printf("\n\t终值为:%0.2lf\n\n",f); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void danlib() //求现值(单利) { printf("\n\t请输入终值:"); scanf("%lf",&f); if(f>0) { printf("\t请输入利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数:"); scanf("%d",&n); if(n>0) { p=f/(1+i*n); printf("\n\t现值为:%0.2lf\n\n",p); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void fulia() //求终值(复利) { printf("\n\t请输入现值:"); scanf("%lf",&p); if(p>0) { printf("\t请输入利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数:"); scanf("%d",&n); if(n>0) { f=p*pow(1+i,n); printf("\n\t终值为:%0.2lf\n\n",f); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void fulib() //求现值(复利) { printf("\n\t请输入终值:"); scanf("%lf",&f); if(f>0) { printf("\t请输入利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数:"); scanf("%d",&n); if(n>0) { p=f/pow(1+i,n); printf("\n\t现值为:%0.2lf\n\n",p); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void fulic() //求周数(复利) { printf("\n\t请输入现值:"); scanf("%lf",&p); if(p>0) { printf("\t请输入终值:"); scanf("%lf",&f); if(f>0 && p<f) { printf("\t请输入利率:"); scanf("%lf",&i); if(i>0 && i<1) { n=log(f/p)/log(1+i); printf("\n\t周数为:%d\n\n",n); } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0且大于现值的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void fulid() //求利率(复利) { printf("\n\t请输入现值:"); scanf("%lf",&p); if(p>0) { printf("\t请输入终值:"); scanf("%lf",&f); if(f>0 && f>p) { printf("\t请输入周数:"); scanf("%d",&n); if(n>0) { i=pow(f/p,1.0/n)-1; printf("\n\t利率应大于等于:%0.2lf\n\n",i); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且大于现值的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } void fulie() //求年金终值(复利) { system("cls"); printf("\n\t ╭───────╮\n"); printf("\t│1.月投资 │\n"); printf("\t│2.年投资 │\n"); printf("\t╰────────╯\n"); printf("\t请选择投资方式:"); scanf("%d",&m); if(m!=1 && m!=2) { printf("\n\t输入错误!\n"); } else if(m==1) //月投 { system("cls"); printf("\n\t请输入每月投入金额:"); scanf("%lf",&p); if(p>0) { printf("\t请输入年利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数(年):"); scanf("%d",&n); if(n>0) { f=0; f=p*(1+i/12)*(-1+pow(1+i/12,n*12))/(i/12); printf("\n\t年金终值为:%0.2lf\n\n",f); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } else if(m==2) //年投 { system("cls"); printf("\n\t请输入每年投入金额:"); scanf("%lf",&p); if(p>0) { printf("\t请输入年利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入周数(年):"); scanf("%d",&n); if(n>0) { f=0; f=p*(1+i)*(-1+pow(1+i,n))/i; printf("\n\t年金终值为:%0.2lf\n\n",f); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } } void fulif() //求每期应还款额 { double v; printf("\n\t请输入贷款数额:"); scanf("%lf",&p); if(p>0) { printf("\t请输入年利率:"); scanf("%lf",&i); if(i>0 && i<1) { printf("\t请输入期限(年):"); scanf("%d",&n); if(n>0) { v=p*i/12*pow((1+i/12),n*12)/(pow((1+i/12),n*12)-1); printf("\n\t每期应还款额:%0.2lf\n\n",v); } else printf("\t请输入大于0的值!\n"); return ; } else printf("\t请输入大于0且小于1的值!\n"); return ; } else printf("\t请输入大于0的值!\n"); return ; } int main() { window(); switch(menu()) { case 1: system("cls"); printf("\n\t\t单利\n"); printf("\t ╭───────╮\n"); printf("\t│1.现值查终值\t │\n"); printf("\t│2.终值查现值\t │\n"); printf("\t╰────────╯\n"); printf("\t请选择计算方式: "); scanf("%d",&m); if(m!=1 && m!=2) { printf("\n\t输入错误!\n\n"); break; } else if(m==1) { system("cls"); danlia(); break; } else if(m==2) { system("cls"); danlib(); break; } case 2: system("cls"); printf("\n\t\t复利"); printf("\t\n\t ╭────────╮\n"); printf("\t│1.现值查终值\t │\n"); printf("\t│2.终值查现值\t │\n"); printf("\t│3.查询周数 \t │\n"); printf("\t│4.查询利率 \t │\n"); printf("\t│5.查询年金终值 │\n"); printf("\t│6.贷款每期应还款额│\n"); printf("\t╰─────────╯\n"); printf("\t请选择计算方式:"); scanf("%d",&m); if( m<1 || m>6 ) { printf("输入错误!\n"); break; } else if(m==1) { system("cls"); fulia(); break; } else if(m==2) { system("cls"); fulib(); break; } else if(m==3) { system("cls"); fulic(); break; } else if(m==4) { system("cls"); fulid(); break; } else if(m==5) { system("cls"); fulie(); break; } else if(m==6) { system("cls"); fulif(); break; } case 0: printf("\n\t\tsee you!\n"); printf("\n\t\t"); system("pause"); exit(0); } }
运行结果:
选择界面:
单利计算:
复利计算:
a.求终值:
b.求现值
c.求周期
d.求利率
e.求年金终值
(月投)
(年投)
f.求每月等额本息还款