0316 复利计算总结(0330 更新)

1.客户说:帮我开发一个复利计算软件。

按照这个要求完成了。

演示。 

计算:本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30

 

客户提出:

2.如果按照单利计算,本息又是多少呢?

3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?

完成23功能,并成功PUSH到github上。

截止时间:3.12晚11点之前

记得更新进度条。

另外,是否预感到客户会有进一步的要求,而在下次会面演示之前有所准备呢?

 

客户又想:

4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 

5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?

6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?

 

7. 你写的程序能让客户随意操作吗?误输入数据、不小心做了非常规的操作程序是什么反应? 

    相互观赏程序运行情况。

8. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

 

名称:复利计算

使用语言:c语言。

工具:VC++。

 

1:           预计完成时间(小时):0.5    实际用时(小时):0.3                      预计工作量(代码行数): 45               实际工作量:30

2,3:        预计完成时间(小时):2       实际用时(小时):2.5                      预计工作量(代码行数): 100             实际工作量:110

4,5,6:     预计完成时间(小时):2       实际用时(小时):4                         预计工作量(代码行数): 140             实际工作量:125

8      预计完成时间(小时):1      实际用时(小时):0.5                        预计工作量(代码行数): 15           实际工作量:10

提交至github地址:https://github.com/caijinghang666/first-code.git

 

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
 
    double p ; //现值
    double f ; //终值
    double i ; //利率
    int n;  //周数
    int m;
    int j;

    window()             //进入界面
    {
        printf("   ╔══════════════╗\n");
        printf("   ║                            ║\n");
        printf("   ║  欢迎使用~                 ║\n");
        printf("   ║                            ║\n");
        printf("   ║                            ║\n");
        printf("   ║                            ║\n");
        printf("   ║         ——单复利查询系统 ║\n");
        printf("   ║                            ║\n");
        printf("   ║                            ║\n");  
        printf("   ╚══════════════╝\n\n\n\n\n");
        system("pause");
    }

    int menu()         //计算选择界面
    {
        char c;
        do{
            system("cls");
            printf("\t ╭──────╮\n");
            printf("\t│1.单利查询  \t│\n");
            printf("\t│2.复利查询  \t│\n");
            printf("\t│0.退出程序  \t│\n");
            printf("\t╰───────╯\t\n");
            printf("\t 请你选择查询方式(0~2): ");
            c=getchar();
            }while(c<'0'||c>'2');
            return (c-'0');
    }

    void danlia()            //求终值(单利)
    {
        printf("\n\t请输入现值:");
        scanf("%lf",&p);
        if(p>0)
        {
            printf("\t请输入利率:");
            scanf("%lf",&i);
            if(i>0 && i<1)
            {
                printf("\t请输入周数:");
                scanf("%d",&n);
                if(n>0)
                {
                    f=p*i*n+p;
                    printf("\n\t终值为:%0.2lf\n\n",f);
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且小于1的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;
        
        

    }

    void danlib()         //求现值(单利)
    {
        printf("\n\t请输入终值:");
        scanf("%lf",&f);
        if(f>0)
        {
            printf("\t请输入利率:");
            scanf("%lf",&i);
            if(i>0 && i<1)
            {
                printf("\t请输入周数:");
                scanf("%d",&n);
                if(n>0)
                {
                    p=f/(1+i*n);
                    printf("\n\t现值为:%0.2lf\n\n",p);
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且小于1的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;

    }

    void fulia()              //求终值(复利)
    {
        printf("\n\t请输入现值:");
        scanf("%lf",&p);
        if(p>0)
        {
            printf("\t请输入利率:");
            scanf("%lf",&i);
            if(i>0 && i<1)
            {
                printf("\t请输入周数:");
                scanf("%d",&n);
                if(n>0)
                {
                    f=p*pow(1+i,n);
                    printf("\n\t终值为:%0.2lf\n\n",f);    
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且小于1的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;
    }

    void fulib()           //求现值(复利)
    {
        printf("\n\t请输入终值:");
        scanf("%lf",&f);
        if(f>0)
        {
            printf("\t请输入利率:");
            scanf("%lf",&i);
            if(i>0 && i<1)
            {
                printf("\t请输入周数:");
                scanf("%d",&n);
                if(n>0)
                {
                    p=f/pow(1+i,n);
                    printf("\n\t现值为:%0.2lf\n\n",p);
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且小于1的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;
     
    }

    void fulic()            //求周数(复利)
    {
        printf("\n\t请输入现值:");
        scanf("%lf",&p);
        if(p>0)
        {
            printf("\t请输入终值:");
            scanf("%lf",&f);
            if(f>0 && p<f)
            {
                printf("\t请输入利率:");
                scanf("%lf",&i);
                if(i>0 && i<1)
                {
                    n=log(f/p)/log(1+i);
                    printf("\n\t周数为:%d\n\n",n);
                }
                else printf("\t请输入大于0且小于1的值!\n");
                return ;
            }
            else printf("\t请输入大于0且大于现值的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;
   
    }

    void fulid()            //求利率(复利)
    {
        printf("\n\t请输入现值:");
        scanf("%lf",&p);
        if(p>0)
        {
            printf("\t请输入终值:");
            scanf("%lf",&f);
            if(f>0 && f>p)
            {
                printf("\t请输入周数:");
                scanf("%d",&n);
                if(n>0)
                { 
                    i=pow(f/p,1.0/n)-1;
                    printf("\n\t利率应大于等于:%0.2lf\n\n",i);
                    
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且大于现值的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;


       
    }

    void fulie()               //求年金终值(复利)
    {
        system("cls");
        printf("\n\t ╭───────╮\n");
        printf("\t│1.月投资        │\n");
        printf("\t│2.年投资        │\n");
        printf("\t╰────────╯\n");
        printf("\t请选择投资方式:");
        scanf("%d",&m);
        if(m!=1 && m!=2)
        {  
            printf("\n\t输入错误!\n");  
            
        }

        else if(m==1)                    //月投
                {    
                    system("cls");
                    printf("\n\t请输入每月投入金额:");
                    scanf("%lf",&p);
                    if(p>0)
                    {
                        printf("\t请输入年利率:"); 
                        scanf("%lf",&i);
                        if(i>0 && i<1)
                        {
                            printf("\t请输入周数(年):");
                            scanf("%d",&n);
                            if(n>0)
                            {
                                f=0;
                                f=p*(1+i/12)*(-1+pow(1+i/12,n*12))/(i/12);
                                printf("\n\t年金终值为:%0.2lf\n\n",f);
                            }
                            else printf("\t请输入大于0的值!\n");
                            return ;
                        }
                        else printf("\t请输入大于0且小于1的值!\n");
                        return ;
                    }
                    else printf("\t请输入大于0的值!\n");
                    return ;
    
                }
                
        else if(m==2)                   //年投
                {
                    system("cls");
                    printf("\n\t请输入每年投入金额:");
                    scanf("%lf",&p);
                    if(p>0)
                    {
                        printf("\t请输入年利率:");
                        scanf("%lf",&i);
                        if(i>0 && i<1)
                        {
                            printf("\t请输入周数(年):");
                            scanf("%d",&n);
                            if(n>0)
                            {
                                f=0;
                                f=p*(1+i)*(-1+pow(1+i,n))/i;
                                printf("\n\t年金终值为:%0.2lf\n\n",f);
                            }
                            else printf("\t请输入大于0的值!\n");
                            return ;
                        }
                        else printf("\t请输入大于0且小于1的值!\n");
                        return ;
                    }
                    else printf("\t请输入大于0的值!\n");
                    return ;
                 }
    }

    void fulif()            //求每期应还款额
    {    
        double v;
        printf("\n\t请输入贷款数额:");
        scanf("%lf",&p);
        if(p>0)
        {
            printf("\t请输入年利率:");
            scanf("%lf",&i);
            if(i>0 && i<1)
            {
                printf("\t请输入期限(年):");
                scanf("%d",&n);
                if(n>0)
                {
                    v=p*i/12*pow((1+i/12),n*12)/(pow((1+i/12),n*12)-1); 
                    printf("\n\t每期应还款额:%0.2lf\n\n",v);    
                }
                else printf("\t请输入大于0的值!\n");
                return ;
            }
            else printf("\t请输入大于0且小于1的值!\n");
            return ;
        }
        else printf("\t请输入大于0的值!\n");
        return ;
    }

    int main()
    {
        window();
        switch(menu())
        {
            case 1:
                system("cls");
                printf("\n\t\t单利\n");
                printf("\t ╭───────╮\n");
                printf("\t│1.现值查终值\t  │\n");
                printf("\t│2.终值查现值\t  │\n");
                printf("\t╰────────╯\n");
                printf("\t请选择计算方式: ");
                scanf("%d",&m);
                if(m!=1 && m!=2)  
                {  
                    printf("\n\t输入错误!\n\n");  
                    break;
                }
                
                else if(m==1)
                {
                    system("cls");
                    danlia();
                    break;
                }
                
                else if(m==2)
                {
                    system("cls");
                    danlib();
                    break;
                }
     
            case 2:
                system("cls");
                printf("\n\t\t复利");
                printf("\t\n\t ╭────────╮\n");
                printf("\t│1.现值查终值\t    │\n");
                printf("\t│2.终值查现值\t    │\n");
                printf("\t│3.查询周数  \t    │\n");
                printf("\t│4.查询利率  \t    │\n");
                printf("\t│5.查询年金终值    │\n");
                printf("\t│6.贷款每期应还款额│\n");
                printf("\t╰─────────╯\n");
                printf("\t请选择计算方式:");
                scanf("%d",&m);
                if( m<1 || m>6 )  
                {  
                    printf("输入错误!\n");  
                    break;
                }
    
                else if(m==1)
                {
                    system("cls");
                    fulia();
                    break;
                }

                else if(m==2)
                {
                    system("cls");
                    fulib();
                    break;
                }

                else if(m==3)
                {
                    system("cls");
                    fulic();
                    break;
                }

                else if(m==4)
                {
                    system("cls");
                    fulid();
                    break;
                }

                else if(m==5)
                {
                    system("cls");
                    fulie();
                    break;
                }

                else if(m==6)
                {
                    system("cls");
                    fulif();
                    break;
                }

            case 0:
                printf("\n\t\tsee you!\n");
                printf("\n\t\t");
                system("pause");
                exit(0);
        }
    }

 

 运行结果:

 选择界面:

 

 

单利计算:

 

复利计算:

a.求终值:

b.求现值

c.求周期

d.求利率

e.求年金终值

(月投)

 

(年投)

f.求每月等额本息还款

 

posted @ 2016-03-16 10:41  J航  阅读(290)  评论(0编辑  收藏  举报