| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2079 人关注过本帖, 1 人收藏
标题:关于单利和复利计算的问题,结果太大,觉得不对
只看楼主 加入收藏
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
结帖率:84.21%
收藏(1)
 问题点数:0 回复次数:5 
关于单利和复利计算的问题,结果太大,觉得不对
Daphne以 10%/年 的单利投资100美元;Deirdre以 5%/年 的复利投资100美元。编写一个程序计算多少年后Deirdre的投资额才会超过Daphne,并且显示出两人到时的投资额。

程序代码:
  1 #include <stdio.h>
  2

  3 int main (void)
  4 {
  5     int dap_int, dei_int; //两人的利息
  6     int i = 0;   //年份计数器
  7     int dol = 100;
  8     do
  9     {

 10         dap_int += 100 * 0.1;  //计算单利
 11        


 12         dei_int = dol + dol * 0.05; //计算复利
 13         dol = dei_int;

 14         i++;

 15     }while (dei_int < dap_int + 100);

 16    


 17     printf ("Daphne        Deirdre \n");


 18     printf ("%d        %d \n", dap_int + 100, dei_int);

 19     printf ("%d years \n", i);

 20    


 21     return 0;

 22 }
~        
最后的计算结果

Daphne:7887228
Deirdre:8268331
需要的时间是 234 年

总觉得这个数字太大,似乎是做错了。
搜索更多相关主题的帖子: 投资 
2011-05-10 12:36
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>

int main(void)
{
    int accountDaphne=0;
    int accountDeirdre=0;
    int initial=100;
    double rate1= 0.05; /*Deirdre's rate*/
    double rate2=0.1; /*Daphne's rate*/
    int year=1;

    printf("Year\tDaphne的存款:\tDeirdre的存款:\n");

    do
    {
        accountDaphne=initial+initial*year*rate2;
        accountDeirdre=initial*pow((1+rate1),year);
        printf("%d\t%d\t\t%d\n",year,accountDaphne,accountDeirdre);
        year++;
    }
    while (accountDaphne>=accountDeirdre);
    

    printf("在%d年 Deirdre 超过 Daphne",year-1);

    return 0;
}

单利的公式没用对,终止条件也有误。
2011-05-10 14:24
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
又重新看了一遍程序,错误在第五行 int dap_int, dei_int; 没有把利息初始化成0,另外复利会有小数出现,所以务必不能用int 而用float。修改成下面就好了。
#include <stdio.h>
 
  int main (void)
  {
      int dap_int=0;
      double dei_int=0; //两人的利息
      int i = 0;   //年份计数器
      double dol = 100;

      do
      {
         dap_int += 100 * 0.1;  //计算单利

         dei_int= dol + dol * 0.05; //计算复利
         dol = dei_int;

         i++;
     }while (dei_int<= dap_int + 100);
   
     printf ("Daphne\tdei_intrdre \n");
     printf ("%d\t%.2lf \n", dap_int + 100, dei_int);
     printf ("%d years \n", i);
   

     return 0;
  }
      
2011-05-10 15:00
pjianet
Rank: 2
等 级:论坛游民
帖 子:9
专家分:55
注 册:2011-5-10
收藏
得分:0 
好深,也感觉不对似的

[url=http://www.]朵拉朵尚[/url];[url=http://www.]玛卡西尼[/url]
2011-05-10 15:13
ilsoviet1917
Rank: 2
等 级:论坛游民
帖 子:103
专家分:26
注 册:2010-5-11
收藏
得分:0 
回复 3楼 oszc
这个年份计数器初始值到底应该是0还是1?
2011-05-10 15:51
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
公式不同,初始值也不同。主要看运算顺序。
我用的公式是代表第N年的状态,初始值是1.
你的公式先运算好利息,这时候已经代表N+1年,所以初始值为0.
2011-05-10 16:07
快速回复:关于单利和复利计算的问题,结果太大,觉得不对
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029435 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved