zoukankan      html  css  js  c++  java
  • 复利计算单元测试

    计算年利率

    (本金,本利,年限)

    终值

    1

    (10000,20000,10)

    0.07

     

    2

    (10000,-20000,20)

    弹出,输入负数,请重新输入

    没有提示

    未改进

    3

    (a,20000,20)

    弹出。输入不合法,请重新输入

    没有提示

    已改进,弹出,输入不合法!,请重新输入

    计算月年收益

    (投资额,年利率,年限)

    终值

    1

    (10000,0.03,30)

                490026.78

     

    2

    (10000,1,30)

    弹出,请输入年利率在0到1之间的书的数,请重新输入!

    没有提示

    为改进请输入年利率在0到1之间的书的数,请重新输入!

           

    计算等额本息还款

    (贷款金额,年利率,归还年限)

    终值

    1

    (20000,0.05,10)

    212.13

     

    2

    (20000,0.05,500)

    弹出,您输入的年限太大,请重新输入!

    没有提示

    未改进

         

    #include<stdio.h>
    #include<math.h>
    void List();
    void fuli1();
    void fuli2();
    void danli();
    void benjin();
    void shijian();
    void lilv();
    void benxi();


    void List()//目录表
    {

    printf(" ");
    printf(" 1.复利(一次) ");
    printf(" 2.复利(多次) ");
    printf(" 3.单利 ");
    printf(" 4.资金 ");
    printf(" 5.时间 ");
    printf(" 6.利率 ");
    printf(" 7.本息 ");
    printf(" ");

    }
    void fuli1()//一次复利计算
    {

    double p,i,sum1,n;//总金额p,利率i,本利和sum1
    a:printf("输入存款金额: ");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto a;
    }

    b:printf("输入利率: ");
    scanf("%lf",&i);
    if(i>1)
    {
    printf("请输入0~1之间的数字");
    goto b;
    }
    c:printf("输入存储时间(年): ");
    scanf("%lf",&n);
    if(n<=1){
    printf("请输入>1的贮存时间");
    goto c;
    }
    sum1=p*pow((1+i),n);//复利的计算公式
    printf("本利和为:%.2lf ",sum1);//输出复利计算的结果
    }
    void fuli2()//多次复利计算
    {

    double p,i,n,sum2=0;
    char c;
    printf("多次等额投入方式: a.等额多次月投 b.等额多次年投 请选择:");
    scanf("%s",&c);
    if(c=='a')
    {
    d:printf("输入月投金额:");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto d;
    }
    e:printf("输入年利率:");
    scanf("%lf",&i);
    if(i<=0&&i>1){
    printf("请输入0~1之间的数字");
    goto e;
    }
    f:printf("输入存储时间(年):");
    scanf("%lf",&n);
    if(n<=1){
    printf("请输入>1的贮存时间");
    goto f;
    }
    sum2=p*12*(pow(1+i,n)-1)/i;
    printf("本利和为:%.2lf ",sum2);
    }
    else
    {
    g:printf("输入年投金额:");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto g;
    }
    h:printf(" *输入年利率:");
    scanf("%lf",&i);
    if(i<=0&&i>1){
    printf("请输入0~1之间的数字");
    goto h;
    }
    i:printf(" *输入存储时间(年):");
    scanf("%lf",&n);
    if(n<1){
    printf("请输入>1的贮存时间");
    goto i;
    }
    sum2=(p*pow((1+i),n)-1)/i;
    printf("本利和为:%.2lf ",sum2);
    }
    }

    void danli()//单利计算
    {

    double p,i,sum3,n;
    j:printf("输入存款金额: ");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto j;
    }
    k:printf("输入年利率: ");
    scanf("%lf",&i);
    if(i<=0&&i>1){
    printf("请输入0~1之间的数字");
    goto k;
    }
    l:printf("输入存储时间(年): ");
    scanf("%lf",&n);
    if(n<=0){
    printf("请输入>1的贮存时间");
    goto l;
    }
    sum3=p*(1+i*n);
    printf("本利和为:%.2lf ",sum3);
    }
    void benjin() //投入资金
    {

    double sum4,i,p,n;//p为投入本金
    printf(" *输入本利和:");
    scanf("%lf",&sum4);

    n:printf(" *输入年利率:");
    scanf("%lf",&i);
    if(i<=0&&i>1){
    printf("请输入0~1之间的数字");
    goto n;
    }
    o:printf(" *请输入存款时间(年):");
    scanf("%lf",&n);
    if(n<=0){
    printf("请输入>1的贮存时间");
    goto o;
    }
    p=sum4/(1+i*n);
    printf(" 投入的本金为:%.2lf ",p);
    }
    void shijian() //投入时间
    {
    double n;
    double sum5,i,p;
    p:printf(" *输入存储金额:");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto p;
    }
    q:printf(" *输入年利率:");
    scanf("%lf",&i);
    if(i<=0&&i>1){
    printf("请输入0~1之间的数字");
    goto q;
    }
    printf(" *输入本利和:");
    scanf("%lf",&sum5);
    n=(log(sum5/p))/(log(1+i));
    printf(" 投入的时间为:%.0lf ",n);
    }
    void lilv() //利率
    {
    double sum6,i,p,n;
    r:printf(" *输入存储金额:");
    scanf("%lf",&p);
    if(p<=0)
    {
    printf("请输入>0的数");
    goto r;
    }
    s:printf(" *输入存储时间(年):");
    scanf("%lf",&n);
    if(n<=0){
    printf("请输入>0的贮存时间");
    goto s;
    }
    printf(" *输入本利和:");
    scanf("%lf",&sum6);
    i=pow((sum6/p),(1/n))-1;
    printf(" 利率为:%.2lf ",i);
    }
    void benxi()
    {
    double sum7,i,p,n;
    t:printf(" *输入贷款金额:");
    scanf("%lf",&sum7);
    if(sum7<=0)
    {
    printf("请输入>0的数");
    goto t;
    }
    u:printf(" *输入贷款时间(年):");
    scanf("%lf",&n);
    if(n<=0){
    printf("请输入>0的贮存时间");
    goto u;
    }
    printf(" *输入年利率:");
    scanf("%lf",&i);
    p=sum7*i/(12*(1+i)*(pow(1+i,n)-1));
    printf(" 每月等额本息还款为:%.2lf ",p);

    }
    main()
    {
    int a;
    while(1)
    {
    List();
    printf(" 请选择:");
    while(scanf("%d",&a)!=1||a<0||a>7)
    {
    printf(" 输入错误! 重新选择:");
    getchar();
    }

    switch(a){
    case 1:
    fuli1();
    break;
    case 2:
    fuli2();
    break;
    case 3:
    danli();
    break;
    case 4:
    benjin();
    break;
    case 5:
    shijian();
    break;
    case 6:
    benxi();
    break;
    case 7:
    benxi();
    break;
    }
    }
    }

    总结:这次单元测试改进了一些bug,但是还有一部分的bug没有想到怎么去修复。

  • 相关阅读:
    一文解读RESTful (转)
    一文解读Redis (转)
    一文解读JSON (转)
    一文解读单点登录 (转)
    一文解读雪碧图 (转)
    一文解读骨架屏 (转)
    一文解读MPA/SPA(转)
    一文解读HTTP2 (转)
    一文解读HTTP (转)
    HTML5中Video标签无法播放mp4的解决办法
  • 原文地址:https://www.cnblogs.com/luoliuxi/p/5339150.html
Copyright © 2011-2022 走看看