复利计算5.0

 #include<stdio.h> 

 #include<math.h> 

 void List(); 

 void A(); 

 void B(); 

 void C(); 

 void D(); 

 void E();

 void F();

 void G();

 void H();

 void I(int op,double record[4]);

 main() 

 { 

    int sel; 

    while(1)

    {

        List(); 

        printf("	请选择:"); 

        while(scanf("%d",&sel)!=1||sel<0||sel>8)//防止输入的是字符以及输入的数字不是整数0-8 

        { 

             printf("	输入错误!!!

	请重新选择:"); 

             while(getchar() != '
');        //  处理回车键

        } 


        if(sel==0)

        {

            printf("	欢迎下次再使用,谢谢!
"); 

            break;

        }

         switch(sel){//选择1~8的功能 

         case 1: 

             A(); 

             break; 

         case 2: 

             B(); 

             break; 

         case 3: 

             C(); 

             break; 

         case 4:

             D();

             break;

         case 5:

             E();

             break;

         case 6:

             F();

             break;

         case 7:

             G();

             break;

         case 8:

             H();

             break;


        }

    }

 } 

   

 void List()//目录表 

 { 

     printf("	|--------------------------------------|
"); 

     printf("	|               功能                   |
"); 

     printf("	|--------------------------------------|
"); 

     printf("	|                                      |
"); 

     printf("	|           1.复利(一次支付)           |
");

     printf("	|           2.复利(多次等额支付)       |
");

     printf("	|           3.单利                     |
"); 

     printf("	|           4.投入资金                 |
"); 

     printf("	|           5.投入时间                 |
"); 

     printf("	|           6.利率                     |
");

     printf("	|           7.每月等额本息还款         |
");

     printf("	|           8.投资计算                |
");

     printf("	|           0.退出                     |
"); 

     printf("	|                                      |
"); 

     printf("	|--------------------------------------|
"); 

 } 

 void A()//一次投入复利计算 

 { 

     int n;//时间n 

     double p,i,sum1;//总金额p,利率i,本利和sum1 

     printf("
	*请输入存款金额:");

     while(scanf("%lf",&p)!=1||p<=0)

     {

        printf("	输入错误!!!

	*请重新输入存款金额:"); 

             getchar();   

     } 

     printf("	*请输入利率:"); 

     while(scanf("%lf",&i)!=1||i<=0)

     {

        printf("	输入错误!!!

	*请重新输入利率:"); 

        getchar();    

     }  

     printf("	*请输入存储时间(年):"); 

     while(scanf("%d",&n)!=1||n<=0||n>100)

     {

        printf("	输入错误!!!

	*请重新输入存储时间(年):"); 

             getchar();    

     } ; 

     sum1=p*pow((1+i),n);//复利的计算公式 

     printf("	**本利和为:%.2lf

",sum1);//输出复利计算的结果 

 } 

void B()//多次等额支付复利计算

 { 

     int n;

     double p,i,sum2=0;

     char choose;

     printf("
	多次等额投入方式:
	1.等额多次月投
	2.等额多次年投
	*请选择:");

     while(scanf("%d",&choose)!=1||choose<1||choose>2)

     {

        printf("	输入错误!!!

	请重新选择:"); 

        while(getchar() != '
');        

     }

     while(getchar() != '
');

     if(choose==1)

     {

        printf("
	*请输入月投金额:"); 

        while(scanf("%lf",&p)!=1||p<=0)

        {

            printf("	输入错误!!!

	*请重新输入月投金额:"); 

            getchar();   

        } 

        printf("	*请输入年利率:"); 

        while(scanf("%lf",&i)!=1||i<=0)

        {

            printf("	输入错误!!!

	*请重新输入利率:"); 

            getchar();    

        }  

        printf("	*请输入存储时间(年):"); 

        while(scanf("%d",&n)!=1||n<=0||n>100)

        {

            printf("	输入错误!!!

	*请重新输入存储时间(年):"); 

            getchar();    

        } 

        sum2=p*12*(pow(1+i,n)-1)/i;

        printf("	**本利和为:%.2lf

",sum2);

     }

     else

     {

        printf("
	*请输入年投金额:"); 

        while(scanf("%lf",&p)!=1||p<=0)

        {

            printf("	输入错误!!!

	*请重新输入年投金额:"); 

            getchar();   

        }  

        printf("	*请输入年利率:"); 

        while(scanf("%lf",&i)!=1||i<=0)

        {

            printf("	输入错误!!!

	*请重新输入利率:"); 

            getchar();    

        }  

        printf("	*请输入存储时间(年):"); 

        while(scanf("%d",&n)!=1||n<=0||n>100)

        {

            printf("	输入错误!!!

	*请重新输入存储时间(年):"); 

            getchar();  

        }

        sum2=(p*pow((1+i),n)-1)/i;

        printf("	**本利和为:%.2lf

",sum2);

     }

 } 

  

 void C()//单利计算 

 { 

     int n; 

     double p,i,sum3; 

     printf("
	*请输入存款金额:"); 

     while(scanf("%lf",&p)!=1||p<=0)

     {

        printf("	输入错误!!!

	*请重新输入存款金额:"); 

        getchar();   

     }  

     printf("	*请输入年利率:"); 

     while(scanf("%lf",&i)!=1||i<=0)

     {

        printf("	输入错误!!!

	*请重新输入利率:"); 

        getchar();    

     }   

     printf("	*请输入存储时间(年):"); 

     while(scanf("%d",&n)!=1||n<=0||n>100)

     {

        printf("	输入错误!!!

	*请重新输入存储时间(年):"); 

        getchar();  

     } 

     sum3=p*(1+i*n); 

     printf("	**本利和为:%.2lf

",sum3); 

 } 

 void D() //投入资金

 { 

     int n; 

     double sum4,i,p;//p为投入本金 

     printf("
	*请输入本利和:");

     while(scanf("%lf",&sum4)!=1||sum4<=0)

     {

        printf("	输入错误!!!

	*请重新输入本利和:"); 

        getchar();   

     }   

     printf("	*请输入年利率:"); 

     while(scanf("%lf",&i)!=1||i<=0)

     {

        printf("	输入错误!!!

	*请重新输入利率:"); 

        getchar();    

     }  

     printf("	*请输入存款时间(年):"); 

     while(scanf("%d",&n)!=1||n<=0||n>100)

     {

        printf("	输入错误!!!

	*请重新输入存款时间(年):"); 

        getchar();  

     }  

     p=sum4/(1+i*n); 

     printf("	**投入的本金为:%.2lf

",p); 

 }

 void E()   //投入时间

 {

     double n;

     double sum5,i,p;

     printf("
	*请输入存储金额:");

     while(scanf("%lf",&p)!=1||p<=0)

     {

        printf("	输入错误!!!

	*请重新输入存储金额:"); 

        getchar();   

     }   

     printf("	*请输入年利率:");

     while(scanf("%lf",&i)!=1||i<=0)

     {

        printf("	输入错误!!!

	*请重新输入利率:"); 

        getchar();    

     }   

     printf("	*请输入本利和:");

     while(scanf("%lf",&sum5)!=1||sum5<=0)

     {

        printf("	输入错误!!!

	*请重新输入本利和:"); 

        getchar();   

     }   

     n=(log(sum5/p))/(log(1+i));

     printf("	**投入的时间为:%.0lf

",n);

 }

void F()  //利率

{

    double sum6,i,p,n;

    printf("
	*请输入存储金额:");

    while(scanf("%lf",&p)!=1||p<=0)

    {

        printf("	输入错误!!!

	*请重新输入存储金额:"); 

        getchar();   

    }   

    printf("	*请输入存储时间(年):");

    while(scanf("%d",&n)!=1||n<=0||n>100)

    {

        printf("	输入错误!!!

	*请重新输入存储时间(年):"); 

        getchar();  

    } 

    printf("	*请输入本利和:");

    while(scanf("%lf",&sum6)!=1||sum6<=0)

    {

        printf("	输入错误!!!

	*请重新输入本利和:"); 

        getchar();   

    }   

    i=pow((sum6/p),(1/n))-1;

    printf("	**利率为:%.2lf

",i);

}

void G()

{

    double sum7,i,p,n;

    printf("
	*请输入贷款金额:");

    while(scanf("%lf",&sum7)!=1||sum7<=0)

    {

        printf("	输入错误!!!

	*请重新输入本利和:"); 

        getchar();   

    }   

    printf("	*请输入贷款时间(年):");

    while(scanf("%d",&n)!=1||n<=0||n>100)

    {

        printf("	输入错误!!!

	*请重新输入贷款时间(年):"); 

        getchar();  

    } 

    printf("	*请输入年利率:");

    while(scanf("%lf",&i)!=1||i<=0)

    {

        printf("	输入错误!!!

	*请重新输入利率:"); 

        getchar();    

    }   

    p=sum7*i/(12*(1+i)*(pow(1+i,n)-1));

    printf("	**每月等额本息还款为:%.2lf

",p);

}

 void H()//计算哪种投资方式的利益最大

{
int n,op=0;
double i,p;
double temp;
double record[4];
printf(
" *请输入存储金额:");
while(scanf("%lf",&p)!=1||p<=0) { printf(" 输入错误!!! *请重新输入存储金额:"); getchar(); } printf(" *请输入年利率:");
while(scanf("%lf",&i)!=1||i<=0) { printf(" 输入错误!!! *请重新输入利率:"); getchar(); } printf(" *请输入t投资时间(年):");
while(scanf("%d",&n)!=1||n<=0||n>100) { printf(" 输入错误!!! *请重新输入投资时间(年):"); getchar(); } record[0]=p*pow((1+i),n);//复利
I(0,record);
record[
1]=p*12*(pow(1+i,n)-1)/i;//等额月投
I(1,record);
record[
2]=(p*pow((1+i),n)-1)/i;//等额年投
I(2,record);
record[
3]=p*(1+i*n);//单利
I(3,record);
temp
=record[0];
for(int j=1;j<4;j++)
{
if(record[j]>temp)
{ temp
=record[j];
op
=j; }
} printf(
" 推荐: "); I(op,record); }
void I(int op,double record[4])//判断哪种投资方式的利益最大
{
switch (op)
{
case 0:printf(" 选择复利投资,本利和为%.2lf ",record[0]);break;
case 1:printf(" 选择等额月投资,本利和为%.2lf ",record[1]);break;
case 2:printf(" 选择等额年投资,本利和为%.2lf ",record[2]);break;
case 3:printf(" 选择等单利投资,本利和为%.2lf ",record[3]);break;
} }
原文地址:https://www.cnblogs.com/mingyin/p/5358570.html