fork download
  1. /* 複利計算
  2. * 年率5% 元金1000ドルの口座の毎年の残高を求める。
  3. * ただし、次の式にしがたう。
  4. * a = p(1+r)^n
  5. * p: 元金
  6. * r: 年利率
  7. * n: 年数
  8. * a: n年後の元利合計 */
  9.  
  10. #include <stdio.h>
  11. #include <math.h>
  12.  
  13. void fukuri(void);
  14. void d_fukuri(void);
  15. void i_fukuri(void);
  16.  
  17. int main(void)
  18. {
  19. printf("%4s\t%21s\n","年数","預金残高");
  20. fukuri();
  21. puts("--------------");
  22. d_fukuri();
  23. puts("--------------");
  24. i_fukuri();
  25.  
  26. return 0;
  27. }
  28. void fukuri(void)
  29. {
  30. int year;
  31. double principal = 1000.0; /* 単位ドル */
  32. double rate = .05;
  33. double amount;
  34.  
  35. for(year=1; year<=10; ++year) {
  36. amount = principal * pow(1.0+rate, year);
  37. printf("%4d\t%21.2f\n", year,amount);
  38. }
  39. }
  40.  
  41. void d_fukuri(void)
  42. {
  43. int year;
  44. double principal = 1000.0; /* 単位ドル */
  45. double rate = .05;
  46. double amount; /* not used */
  47.  
  48. for(year=1; year<=10; ++year) {
  49. principal = principal * (1+rate);
  50. printf("%4d\t%21.2f\n", year, principal);
  51. }
  52. }
  53.  
  54. void i_fukuri(void)
  55. {
  56. int year;
  57. int principal = 1000;
  58. int rate = 5; /* 5% */
  59. int amount; /* not used */
  60.  
  61. principal *= 100; /* 1,000ドル=100,000セント */
  62.  
  63. for(year=1; year<=10; ++year) {
  64. principal = principal + principal*rate/100;
  65. printf("%4d\t%21d.%02d\n", year,principal/100,principal%100);
  66. }
  67. }
  68.  
Success #stdin #stdout 0s 2112KB
stdin
Standard input is empty
stdout
年数	         預金残高
   1	              1050.00
   2	              1102.50
   3	              1157.63
   4	              1215.51
   5	              1276.28
   6	              1340.10
   7	              1407.10
   8	              1477.46
   9	              1551.33
  10	              1628.89
--------------
   1	              1050.00
   2	              1102.50
   3	              1157.62
   4	              1215.51
   5	              1276.28
   6	              1340.10
   7	              1407.10
   8	              1477.46
   9	              1551.33
  10	              1628.89
--------------
   1	                 1050.00
   2	                 1102.50
   3	                 1157.62
   4	                 1215.50
   5	                 1276.27
   6	                 1340.08
   7	                 1407.08
   8	                 1477.43
   9	                 1551.30
  10	                 1628.86