单复利软件单元测试

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

2.如果按照单利计算,本息的最终收益

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

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

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

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

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

 因为为了方便测试,所以把前几次的单复利计算合起来一个程序方便测试。因为可以输入年份,本金,利率等可以输入负数,所以在每个输入都加入限制while使输入的都大于0.

单元测试预期结果及其代码:

测试模块

测试输入

预期结果

运行结果

bug跟踪

复利计算

(本金,年限,利率,次数)

终值

   

测试运算结果

(1000,3,0.05,5)

×

 

 测试输出正数

(1000,3,0.05,1)

 测试输入负数

 (-1000,3,-0.05,1)  输入错误请输入正确的数值  √  

单利计算

(利率,本金,年限)

 终值    
 测试运算结果  ("0.03","5000","3")  √   √  
 测试输入负数  ("0.03","5000","3")  输入错误请输入正确的数值   √  
测试输出正数 ("-0.03","-5000","3") 输入错误请输入正确的数值  √  
投资年限 (利率,本金,终值,次数)      
测试运算结果 ("0.05","100.0","105.0","1")  
测试输出正数 ("0.05","100.0","105.0","1")  
测试输入负数 ("-0.05","-100.0","105.0","1") 输入错误请输入正确的数值  
...... 以下结果与上表一致      

#include<stdio.h>
#include<math.h>
main()
{   
    int a,f;
    double money,time,i,sum,b,c;

      printf(" ※※※※※※※※※ ");
      printf("※请输入1或2或3或4※ ");
      printf(" ※※※※※※※※※ ");
      printf("----------------------------- ");
      printf("|1复利计算收益(投资年限估算) | ");
      printf("|2.最优投资项目利率估算     | ");
      printf("|3.定投计算               | ");
      printf("|4.单利计算               | ");
      printf("----------------------------- ");


    scanf("%d",&a);
        if(a!=1&&a!=2&&a!=3&&a!=4)
        {
        printf("输入错误,请重新输入!");
        scanf("%d",&a);
        }
    
        if(a==1)
        {
        printf("请输入本金:");
        scanf("%lf",&money);
        while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
        printf("请输入得到金额:");
        scanf("%lf",&sum);
            while(sum<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&sum);
        }
        printf("请输入利率:");
        scanf("%lf",&i);
        while(i<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&i);
        }
        time= log(sum/money) / log(1+i);
        printf("%lf年时间完成
",time);
        }
        if(a==2)
        {
        printf("请输入本金:");
        scanf("%lf",&money);
        while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
        printf("请输入得到金额:");
        scanf("%lf",&sum);
        while(sum<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&sum);
        }
        printf("请输入时间:");
        scanf("%lf",&time);
        while(time<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&time);
        }
        b=pow(sum/money,1/time);
        i=(b-1)*100;
        printf("所需利率至少:%lf% 
",i);
        }
        if(a==3)
        {  
         b=1;
         printf("请输入每年投入金额:");
         scanf("%lf",&money);
         while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
         c=money;
         printf("请输入时间:");
         scanf("%lf",&time);
         while(time<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&time);
        }
         printf("请输入利率:");
         scanf("%lf",&i);
         while(i<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&i);
        }
         while(b<=time)
        {
                sum=money*(1+i);
                money=sum+c;
                b++;
        }
        printf("所得到回报:%lf 
",sum);  
        }

        if(a==4)
           {
              printf("1.求存年数
");
              printf("2.求利率
");
              printf("3.求时本利和
");
              scanf("%d",&f);
              if(f!=1&&f!=2&&f!=3) 
                {
                  printf("输入错误,请重新输入!
");
                  scanf("%d",&f);
                }
              if(f==1)
             {
                   printf("请输入本金:");
                   scanf("%lf",&money);
                   while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
                   printf("请输入利率:");
                   scanf("%lf",&i);
                   while(i<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&i);
        }
                   printf("请输入本利和:");
                   scanf("%lf",&sum);
                   while(sum<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&sum);
        }
                   time=(sum-money)/money*i;
                   printf("存年数为%lf
",time);
              }
                if(f==2)
             {
                   printf("请输入本金:");
                   scanf("%lf",&money);
                   while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
                   printf("请输入本利和:");
                   scanf("%lf",&sum);
                   while(sum<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&sum);
        }
                   printf("请输入存年数:");
                   scanf("%lf",&time);
                   while(time<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&time);
        }
                   i=(sum-money)/money*time;
                   printf("利率为%lf
",i);
              }
                if(f==3)
              {
                 printf("请输入本金:");
                 scanf("%lf",&money);
                 while(money<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&money);
        }
                 printf("请输入存年数:");
                 scanf("%lf",&time);
                 while(time<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&time);
        }
                 printf("请输入利率:");
                 scanf("%lf",&i);
                 while(i<=0)
        {
            printf("输入错误,请重新输入!
");
            scanf("%lf",&i);
        }
                 sum=money*time*i+money;    
                 printf("
");
                 printf("本利和为%lf
",sum);
              }
          
             }
}

在测试当中发现输入本金,时间和利率等如果输入非数字时会输出死循环“输入错误,请重新输入“。

在测试单利计算结果正确,答案无错误。测试复利计算时发现错误,答案有很大误差,应该是计算复利的公式错了。

原文地址:https://www.cnblogs.com/l549023320/p/5334139.html