zoukankan      html  css  js  c++  java
  • 复利计算4.0

    程序构造思路:

    第一点:新增每年或每月定期输入等值金额,求复利计算本利和,在编写代码过程中有点困难

    第二点:新增加循环继续功能,按所需不断进行计算

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    void DEBXHK()//等额本息还款
    {
        double F,rate,P;
        int year;
        printf("请输入贷款金额:");
        scanf("%lf",&F);
        printf("请输入存入贷款年限:");
        scanf("%d",&year);
        printf("请输入年利率:");
        scanf("%lf",&rate);
        P=F*rate/(12*(1+rate)*(pow(1+rate,year)-1));
        printf("每月等额本息还款为:%.2lf",P);
    }
    void Benjin()
    {
        int Year;    
        double P,i;
        double S;
        double E,D=1;
        int l;
        printf("输入期待金额为:");
        scanf("%lf",&S);
        printf("
    请输入存储年限:");
        scanf("%d",&Year);        
        printf("
    请输入年利率:");
        scanf("%lf",&i);
        for(l=1;l<=Year;l++)
        {
            E=D*(1+i);
            D=E;
        }
        P=S/D;
        printf("
    应输入的本金为:");
        printf("%.2lf",P);
    }
    void Zhongzhi()//复利终值计算
    {
        int year;//year表示复利年限
        double p;//p表示本金
        double i;//i表示年利率
        double F;//表示复利后的终值
        int k;
        printf("请输入复利次数(年):");
        scanf("%d",&year);
        printf("
    请输入本金:");
        scanf("%lf",&p);
        printf("
    请输入年利率:");
        scanf("%lf",&i);
        for(k=1;k<=year;k++){
            F=p*(1+i);
            p=F;
        }
        printf("
    复利后的终值为:");
        printf("%.2lf",F);
    }
    void Dingqi()//定投计算
    {
        double Money,money,money1,rate1,rate,sum;
        int years,i,n;
        char j;
    ab:
        printf("|***************************************************************|
    ");
        printf("|          1.按年投                                2.按月投     |
    ");
        printf("|***************************************************************|
    ");
        printf("请选择功能[1,2]:");
        scanf("%d",&n);
        if(n==1){
            printf("请输入每年定存金额:"); 
            scanf("%lf",&money); 
            printf("请输入年回报率:"); 
            scanf("%lf",&rate); 
            printf("请输入次数(年):"); 
            scanf("%d",&years); 
            Money=money;
            sum=0;
            for(i=1;i<=years;i++)
            {
                sum=money*(1+rate);
                money=sum+Money;                
            }
            printf("若连本带利投资,最后得到的资产总值为:%.2lf",sum);
        }
        if(n==2)
        {
            printf("请输入每月定存金额:"); 
            scanf("%lf",&money); 
            printf("请输入月回报率:"); 
            scanf("%lf",&rate); 
            printf("请输入次数(年):"); 
            scanf("%d",&years); 
            Money=money*12;
            sum=0;
            money1=money*12;
            rate1=rate*12;
            for(i=1;i<=years;i++)
            {
                sum=money1*(1+rate1);
                money1=sum+Money;                
            }
            printf("若连本带利投资,最后得到的资产总值为:%.2lf",sum);
        } 
            printf("
    是否继续定额计算(y or n)? :");
             scanf(" %c",&j);
                if(j=='y' || j=='Y')
                   goto ab;//是否继续查询
                    return;
    }
    void Rate()//利率计算
    {
        int year,flat=0; 
        double P,F;
        double i;
        printf("请输入本利和:"); 
        scanf("%lf",&F); 
        printf("请输入次数(年):"); 
        scanf("%d",&year); 
        printf("请输入本金:"); 
        scanf("%lf",&P); 
        i=pow(F/P, 1.0/year)-1;
        printf("年利率为:%.3lf",i);
    }
    void Time()//存款年份计算
    {
        int n,flat=0; 
        double P,i,F; 
        printf("请输入本利和:"); 
        scanf("%lf",&F); 
        printf("请输入年回报率:"); 
        scanf("%lf",&i); 
        printf("请输入本金:"); 
        scanf("%lf",&P); 
        for(n=1;n<100;n++)    //穷举法求100年满足的计息期数
        {
            if((P*(pow((1+i),n)))>=F)
            {
                printf("计息期数:%d
    
    ",n);
                flat=1;
                break;
            }
        }
        if(flat==0)
            printf("在100年内没有符合计息期数!
    
    ");
        
    }
    void menu()
    {                                 
        puts("
    
    ");
        puts("		|******************************************************|");
        puts("		|                    利息计算系统                      |");
        puts("		|******************************************************|");
        puts("		|                    1: 复利计算                       |");
        puts("		|                    2: 单利计算                       |");
        puts("		|                    0: 退出程序                       |");
        puts("		|******************************************************|");
        printf("请选择<0~2>:");
    }
    void Fuli()
    {
        int n;
        char j;
    abs:
        puts("		|******************************************************|");
        puts("		|                    1: 终值计算                       |");
        puts("		|                    2: 本金计算                       |");
        puts("		|                    3: 期数计算                       |");
        puts("		|                    4: 利率计算                       |");
        puts("		|                    5: 定期计算                       |");
        puts("		|                    6: 等额本息还款                   |");
        puts("		|******************************************************|");
        printf("请选择功能[1~6]:");
        scanf("%d",&n);
        if(n==1)
        {
            Zhongzhi();
        }
        if(n==2)
        {
            Benjin();
        }    
        if(n==3)
        {
            Time();
        }    
        if(n==4)
        {
            Rate();
        }
        if(n==5)
        {
            Dingqi();
        }
        if(n==6)
        {
            DEBXHK();
        }
        printf("
    是否继续(y or n)? :");
             scanf(" %c",&j);
                if(j=='y' || j=='Y')
                   goto abs;//是否继续查询
                    return;
        
    }
    void Danli()//单利计算
    {
        int year;//year表示复利年限
        double p;//p表示本金
        double i;//i表示年利率
        double Fv;//表示复利后的终值
        printf("请输入单利次数(年):");
        scanf("%d",&year);
        printf("
    请输入本金:");
        scanf("%lf",&p);
        printf("
    请输入年利率:");
        scanf("%lf",&i);
        printf("
    单利后的终值为:");
        Fv=p*(1+i*year);
        printf("%.2lf",Fv);
    }
    
    
    main(){
        int n;
        while(1)
        {
            menu();
            scanf("%d",&n);
            if(n==0) break;
            switch(n)
            {  
            case 1:
                Fuli(); break;
            case 2:
                Danli();break;
            case 0:
                n=0;exit(0);
                
            }
        }    
        
    }

  • 相关阅读:
    关于《GridView“GridView1”激发了未处理的事件“PageIndexChanging”》的问题!
    励志名言
    Java从入门到精通
    Java学习每天进步一点点
    学**况
    git常用命令
    linux常用命令
    linux yum命令详解
    git分支
    linux常用命令(2)
  • 原文地址:https://www.cnblogs.com/RSTART/p/5296194.html
Copyright © 2011-2022 走看看