复利计算4.0
Posted 48梁仕标
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复利计算4.0相关的知识,希望对你有一定的参考价值。
程序构造思路:
第一点:新增每年或每月定期输入等值金额,求复利计算本利和,在编写代码过程中有点困难
第二点:新增加循环继续功能,按所需不断进行计算
#include<stdio.h> #include<math.h> #include<stdlib.h> void DEBXHK()//等额本息还款 { double F,rate,P; int year; printf("请输入贷款金额:"); scanf("%lf",&F); printf("请输入存入贷款年限:"); scanf("%d",&year); printf("请输入年利率:"); scanf("%lf",&rate); P=F*rate/(12*(1+rate)*(pow(1+rate,year)-1)); printf("每月等额本息还款为:%.2lf",P); } void Benjin() { int Year; double P,i; double S; double E,D=1; int l; printf("输入期待金额为:"); scanf("%lf",&S); printf("\n请输入存储年限:"); scanf("%d",&Year); printf("\n请输入年利率:"); scanf("%lf",&i); for(l=1;l<=Year;l++) { E=D*(1+i); D=E; } P=S/D; printf("\n应输入的本金为:"); printf("%.2lf",P); } void Zhongzhi()//复利终值计算 { int year;//year表示复利年限 double p;//p表示本金 double i;//i表示年利率 double F;//表示复利后的终值 int k; printf("请输入复利次数(年):"); scanf("%d",&year); printf("\n请输入本金:"); scanf("%lf",&p); printf("\n请输入年利率:"); scanf("%lf",&i); for(k=1;k<=year;k++){ F=p*(1+i); p=F; } printf("\n复利后的终值为:"); printf("%.2lf",F); } void Dingqi()//定投计算 { double Money,money,money1,rate1,rate,sum; int years,i,n; char j; ab: printf("|***************************************************************|\n"); printf("| 1.按年投 2.按月投 |\n"); printf("|***************************************************************|\n"); printf("请选择功能[1,2]:"); scanf("%d",&n); if(n==1){ printf("请输入每年定存金额:"); scanf("%lf",&money); printf("请输入年回报率:"); scanf("%lf",&rate); printf("请输入次数(年):"); scanf("%d",&years); Money=money; sum=0; for(i=1;i<=years;i++) { sum=money*(1+rate); money=sum+Money; } printf("若连本带利投资,最后得到的资产总值为:%.2lf",sum); } if(n==2) { printf("请输入每月定存金额:"); scanf("%lf",&money); printf("请输入月回报率:"); scanf("%lf",&rate); printf("请输入次数(年):"); scanf("%d",&years); Money=money*12; sum=0; money1=money*12; rate1=rate*12; for(i=1;i<=years;i++) { sum=money1*(1+rate1); money1=sum+Money; } printf("若连本带利投资,最后得到的资产总值为:%.2lf",sum); } printf("\n是否继续定额计算(y or n)? :"); scanf(" %c",&j); if(j==‘y‘ || j==‘Y‘) goto ab;//是否继续查询 return; } void Rate()//利率计算 { int year,flat=0; double P,F; double i; printf("请输入本利和:"); scanf("%lf",&F); printf("请输入次数(年):"); scanf("%d",&year); printf("请输入本金:"); scanf("%lf",&P); i=pow(F/P, 1.0/year)-1; printf("年利率为:%.3lf",i); } void Time()//存款年份计算 { int n,flat=0; double P,i,F; printf("请输入本利和:"); scanf("%lf",&F); printf("请输入年回报率:"); scanf("%lf",&i); printf("请输入本金:"); scanf("%lf",&P); for(n=1;n<100;n++) //穷举法求100年满足的计息期数 { if((P*(pow((1+i),n)))>=F) { printf("计息期数:%d\n\n",n); flat=1; break; } } if(flat==0) printf("在100年内没有符合计息期数!\n\n"); } void menu() { puts("\n\n"); puts("\t\t|******************************************************|"); puts("\t\t| 利息计算系统 |"); puts("\t\t|******************************************************|"); puts("\t\t| 1: 复利计算 |"); puts("\t\t| 2: 单利计算 |"); puts("\t\t| 0: 退出程序 |"); puts("\t\t|******************************************************|"); printf("请选择<0~2>:"); } void Fuli() { int n; char j; abs: puts("\t\t|******************************************************|"); puts("\t\t| 1: 终值计算 |"); puts("\t\t| 2: 本金计算 |"); puts("\t\t| 3: 期数计算 |"); puts("\t\t| 4: 利率计算 |"); puts("\t\t| 5: 定期计算 |"); puts("\t\t| 6: 等额本息还款 |"); puts("\t\t|******************************************************|"); printf("请选择功能[1~6]:"); scanf("%d",&n); if(n==1) { Zhongzhi(); } if(n==2) { Benjin(); } if(n==3) { Time(); } if(n==4) { Rate(); } if(n==5) { Dingqi(); } if(n==6) { DEBXHK(); } printf("\n是否继续(y or n)? :"); scanf(" %c",&j); if(j==‘y‘ || j==‘Y‘) goto abs;//是否继续查询 return; } void Danli()//单利计算 { int year;//year表示复利年限 double p;//p表示本金 double i;//i表示年利率 double Fv;//表示复利后的终值 printf("请输入单利次数(年):"); scanf("%d",&year); printf("\n请输入本金:"); scanf("%lf",&p); printf("\n请输入年利率:"); scanf("%lf",&i); printf("\n单利后的终值为:"); Fv=p*(1+i*year); printf("%.2lf",Fv); } main(){ int n; while(1) { menu(); scanf("%d",&n); if(n==0) break; switch(n) { case 1: Fuli(); break; case 2: Danli();break; case 0: n=0;exit(0); } } }
以上是关于复利计算4.0的主要内容,如果未能解决你的问题,请参考以下文章