• 复利计算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;
    } }
  • 相关阅读:
    面试C#需要准备的一些基础
    学习jQuery(一),做的第一个可拖动列的Grid
    面试的两道SQL题
    SSIS ODBC方式连接mysql数据库的一个问题
    WIN7下A卡解决部分游戏(CS、CF等)无法全屏问题
    显示Deprecated: Assigning the return value of new by reference is deprecated in解决办法
    Eclipse 中文插件的安装
    安装NASM for Linux
    将Eclipse中文注释字体变大方法
    如何查看局域网内所有IP
  • 原文地址:https://www.cnblogs.com/mingyin/p/5358570.html
Copyright © 2020-2023  润新知