您的位置:首页 > 其它

复利计算4.0

2016-03-20 13:45 190 查看
程序完成时间为3月20日13:35分。

发表时间为3月20日13:37分。

此版本是在前面三个版本的基础上进行完善,实现了等额本息还款计算,解决了如果用户输入一部分不恰当的数据会提示输入不合法,请重新输入,增强了系统的运行性,不会因此而导致系统会奔溃

不断修改的可观性,使用户更加直观的运用此运算器。

#include<stdio.h>
#include<math.h>
#define x1   while(0 ==
#define x2   ){    while('\n' != getchar())    {    }    printf("输入不合法!\n请重新输入: ---");        }

double danli(double i,int N,double P)
{
double nlx,F;
nlx = P*i;
F = nlx*N + P;
return F;

}

double fuli(double i,int W,int N,double P)
{
double F;
i=pow(1+i/W,W)-1;
F=P*pow((i+1),N);
return F;
}

double gusuan(double i,int W,int N,double F)
{
double P;
i = pow(1+i/W,W)-1;
P = F/pow((i+1),N);
return P;
}
double shijian(double P,double i,double F)
{
double N,x;
x=F/P;
N=(log(x))/(log(i+1));
return N;

}
double nianxian(double P,double N,double F)
{
double i;
//i = W*(pow(pow(F/P,1.0/N),1.0/W)-1.0);
i = pow(F/P,1.0/N)-1.0;
return i;
}
double sum()
{
double y,yue,F=0.0,i,mi;
double nl,yl;
int N,W;
int ch,j;
printf("****** 1-年投资  2-月投资 ******\n");
scanf("%d",&ch);
if(ch == 1)
{
printf("请输入年投资额:\n");
x1  scanf("%lf",&y)  x2;
}
else
{
printf("请输入月投资额:\n");
x1  scanf("%lf",&yue)  x2;
}

printf("请输入年利率\n");
x1  scanf("%lf",&i)  x2;
printf("请输入年限\n");
x1  scanf("%d",&N)  x2;

if(ch == 1)
{
F = y;
for(j=0 ; j<N ; j++)
{
nl = F*i;
F=y+nl+F;
}
return F-y;
}
else
{
F = yue;
mi = i/12.0;
for(j=0 ; j<N*12 ; j++)
{
yl = F*mi;
F=yue+yl+F;
}
return F-yue;
}

}
double refund()
{
double P,i,month_amount;
int N,month;
printf("************您进入本息还款计算************\n");
printf("请输入贷款金额:\n");
x1    scanf("%lf",&P)    x2
printf("请输入年利率:\n");
x1    scanf("%lf",&i)    x2
printf("请输入归还年限:\n");
x1    scanf("%d",&N)    x2

//每月还款额=[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]

i = i/12;
month = N*12;
month_amount = P*i*pow((1.0+i),month)/(pow(1.0+i,month)-1);
return month_amount;

}
void main()
{
double P,F1,F,i; //P是本金,F是收益,i年利率
int N,W,ch2; //是期限
while(1)
{
printf("\t\t***************欢迎使用复利计算器*************\n\n");
printf("\t\t|     -----1--------为复利---------------    |\n\n");
printf("\t\t|     -----2--------为单利---------------    |\n\n");
printf("\t\t|     -----3-------为估算----------------    |\n\n");
printf("\t\t|     -----4-------为年限----------------    |\n\n");
printf("\t\t|     -----5-------为年利率--------------    |\n\n");
printf("\t\t|     -----6-------为月年收益--------------    |\n\n");
printf("\t\t|     -----7-------等额本息还款--------------    |\n\n");
printf("\t\t|     -----0-------为退出----------------    |\n\n");
printf("\t\t**************请选择想要的功能************\n");
x1  scanf("%d",&ch2)  x2;//控制选择
switch(ch2){
case 1:
printf("请输入本金:\n");
x1  scanf("%lf",&P)  x2;
printf("请输入年利率\n");
x1  scanf("%lf",&i)  x2;
printf("请输入年限:\n");
x1  scanf("%d",&N)  x2;
printf("请输入复利次数:\n");
x1  scanf("%d",&W)  x2;
F1 = fuli(i,W,N,P); break;
case 2:
printf("请输入本金:\n");
x1  scanf("%lf",&P)  x2;
printf("请输入年利率\n");
x1  scanf("%lf",&i)  x2;
printf("请输入年限:\n");
x1  scanf("%d",&N)  x2;
F1 = danli(i,N,P); break;
case 3:
printf("请输入本利\n");
x1  scanf("%lf",&F)  x2;
printf("请输入年利率\n");
x1  scanf("%lf",&i)  x2;
printf("请输入年限:\n");
x1  scanf("%d",&N)  x2;
printf("请输入复利次数:\n");
x1  scanf("%d",&W)  x2;
F1 = gusuan(i,W,N,F);
break;

case 4:
printf("请输入本金\n");
x1  scanf("%lf",&P)  x2;
printf("请输入年利率\n");
x1  scanf("%lf",&i)  x2;
printf("请输入本利\n");
x1  scanf("%lf",&F)  x2;
F1=shijian(P,i,F);
break;
case 5:

printf("请输入本金:\n");
x1  scanf("%lf",&P)  x2;
printf("请输入本利:\n");
x1  scanf("%lf",&F)  x2;
printf("请输入年限\n");
x1  scanf("%d",&N)  x2;
F1=nianxian(P,N,F);

//    i=pow((F/P),(1.0/N))-1;
break;
case 6:
F1=sum();
break;
case 7:
F1=refund();
break;
case 0:break;
default:
printf("输入不合法!!\n");
continue ;
}
if(ch2==0)
break;
printf("结果为:%.2lf\n",F1);
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: