复利计算器2.0

#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 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:
			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("         
");
	printf("please enter your choise(1--7):");  
	while( (!(scanf("%d",&choice)))|| (choice<1)||(choice>7)) 
	{ 
		printf("
  选择错误,请重新选择:
");  		
		printf("                       
"); 	
        printf("功能菜单
");      
	    printf("     1.计算复利终值
");
        printf("     2.计算单利终值
");
	    printf("     3.计算本金
");
	    printf("     4.计算时间
");
	    printf("     5.计算利率
");
		printf("     6.年金终值(年|月)
");
	    printf("     7.退出
");
		printf("                       
"); 	
		printf("please enter your choise(1--7):");  			
	}	
	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("	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 exit()
{
	printf("       感谢您使用复利计算软件!
");
	exit(0);
}

  



  

原文地址:https://www.cnblogs.com/babys8023/p/5287116.html