#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int selectmenu();
void fuli(); //复利
void danli(); //单利
void benjin(); //本金
void time(); //时间
void lilv(); //利率
void invest(); //定额定投
void average(); //等额还款金额
void exit(); //退出
void main() //主函数
{
int choice;
choice=selectmenu();
while(1)
{
switch(choice)
{
case 1:
fuli();
break;
case 2:
danli();
break;
case 3:
benjin();
break;
case 4:
time();
break;
case 5:
lilv();
break;
case 6:
invest();
break;
case 7:
average();
break;
case 8:
exit(0);
break;
}
choice=selectmenu();
}
}
int selectmenu() //菜单
{
int choice;
printf(" 欢迎使用复利计算软件
");
printf("
");
printf("功能菜单:
");
printf(" 1.计算复利终值
");
printf(" 2.计算单利终值
");
printf(" 3.计算本金
");
printf(" 4.计算时间
");
printf(" 5.计算利率
");
printf(" 6.年金终值(年|月)
");
printf(" 7.计算每月等额本息和
");
printf(" 8.退出
");
printf("
");
printf("please enter your choise(1--8):");
while( (!(scanf("%d",&choice)))|| (choice<1)||
(choice>8))
{
printf("
选择错误,请重新选择:
");
printf("
");
printf("功能菜单:
");
printf(" 1.计算复利终值
");
printf(" 2.计算单利终值
");
printf(" 3.计算本金
");
printf(" 4.计算时间
");
printf(" 5.计算利率
");
printf(" 6.年金终值(年|月)
");
printf(" 7.计算每月等额本息和
");
printf(" 8.退出
");
printf("
");
printf("please enter your choise(1--
8):");
}
return choice;
}
void tip() //计算公式
{
printf(" 复利计算公式
");
printf(" F=P*(1+i)N(次方)
");
printf(" 单利计算公式
");
printf(" I=P*i*N
");
printf(" 本金计算公式
");
printf(" P=F*(1+i)N(次方)
");
printf(" 时间计算公式
");
printf(" N=(int)(log(F/P)/log(1+i/m)/m)
");
printf(" 利率计算公式
");
printf(" i=m*(pow(F/P,1.0/(N*m))-1)
");
printf(" 每月等额本息和计算公式
");
printf(" P=F*i/(12*(1+i)*(pow(1+i,N)-1))
");
printf(" F:终值
");
printf(" P:本金
");
printf(" i:利率
");
printf(" N:计息期数
");
}
void fuli() //复利
{
int N,m;
double i,F,P;
tip();
printf("存入本金:");
scanf("%lf",&P);
printf("年利率:");
scanf("%lf",&i);
printf("存入年限:");
scanf("%d",&N);
printf("年复利次数:");
scanf("%d",&m);
F=P*pow((1+i/m),N*m);
printf("终值:%.4lf
",F);
}
void danli() //单利
{
int N;
double i,F,P;
tip();
printf("存入本金:");
scanf("%lf",&P);
printf("年利率:");
scanf("%lf",&i);
printf("存入年限:");
scanf("%d",&N);
F=P*i*N;
printf("终值:%.4lf
",F);
}
void benjin() //本金
{
int N,m;
double i,F,P;
tip();
printf("终值:");
scanf("%lf",&F);
printf("年利率:");
scanf("%lf",&i);
printf("存入年限:");
scanf("%d",&N);
printf("年复利次数:");
scanf("%d",&m);
P=F/pow((1+i/m),N*m);
printf("本金:%.4lf
",P);
}
void time() //时间
{
int N,m;
double i,F,P;
tip();
printf("存入本金:");
scanf("%lf",&P);
printf("年利率:");
scanf("%lf",&i);
printf("年复利次数:");
scanf("%d",&m);
printf("终值:");
scanf("%lf",&F);
N=(int)(log(F/P)/log(1+i/m)/m);
printf("时间:%d
",N);
}
void lilv() //利率
{
int N,m;
double i,F,P;
tip();
printf("存入本金:");
scanf("%lf",&P);
printf("存入年限:");
scanf("%d",&N);
printf("年复利次数:");
scanf("%d",&m);
printf("终值:");
scanf("%lf",&F);
i=m*(pow(F/P,1.0/(N*m))-1);
printf("利率:%.4lf
",i);
}
void invest()//计算年金终值
{
int N,n;
double i,F,P;
printf("存入本金:");
scanf("%lf",&P);
printf("存入年限:");
scanf("%d",&N);
printf("年利率:");
scanf("%lf",&i);
printf("1:按年投资
2:按月投资
");
A:printf("请选择你要的功能<1|2>:");
scanf("%d",&n);
if(n==1)
{
F=P*(pow(1+i,N)-1)/i;
}
else if(n==2)
{
F=N*12*(P*(i/12)+P);
}
else
{
printf("输入有误!请重新输入
");
goto A;
}
printf("%d年后的总产值:%.4lf
",N,F);
}
void average() //计算等额还款金额
{
int N;
double i,F,P;
printf("贷款金额:");
scanf("%lf",&F);
printf("存入年限:");
scanf("%d",&N);
printf("年利率:");
scanf("%lf",&i);
P=F*i/(12*(1+i)*(pow(1+i,N)-1));
printf("等额还款金额%.4lf
",P);
}
void exit() //退出
{
printf(" 感谢您使用复利计算软件!
");
exit(0);
}