复利计算(更新)

  1 #include<stdio.h>
  2 #include<math.h>
  3 void view()
  4 {
  5     printf("              |---------------------------------------------|
");
  6     printf("              |                 单/复利计算                 |
");
  7     printf("              |---------------------------------------------|
");
  8     printf("              |1.单利计算                                   |
");
  9     printf("              |---------------------------------------------|
");
 10     printf("              |2.复利计算                                   |
");
 11     printf("              |---------------------------------------------|
");
 12     printf("              |3.求年限                                     |
");
 13     printf("              |---------------------------------------------|
");
 14     printf("              |4.求年利率                                   |
");
 15     printf("              |---------------------------------------------|
");
 16     printf("              |5.固定存钱                                   |
");
 17     printf("              |---------------------------------------------|
");
 18     printf("              |6.贷款                                       |
");
 19     printf("              |---------------------------------------------|
");
 20     printf("              |0.退出系统                                   |
");
 21     printf("              |---------------------------------------------|
");
 22 }
 23 
 24 
 25 
 26 main()
 27 {
 28     int i,n,N=100;
 29     double v,money;  //本金 
 30     int years;    //存钱年数、月数 
 31     double sum;  //存款总额 
 32     double r;   //年利率
 33     double A,B,C,y,Money;
 34     while(1)
 35     {
 36 la1:view();
 37         printf("请选择(0-6):");
 38         scanf("%d",&n);
 39         switch(n)
 40         {
 41     case 1:
 42         printf("请输入本金:");
 43         scanf("%lf",&money);
 44           printf("请输入存钱年数:");
 45         scanf("%d",&years);
 46         printf("请输入利率:");
 47         scanf("%lf",&r);
 48         for(i = 1 ; i<=years; i++)
 49         {
 50             sum = r*i*money+money;  
 51             printf("存入第%d年后的存款总额为:%.2lf


",i,sum);
 52         }
 53         break;
 54     case 2:
 55         printf("请选择:
");
 56         printf("1.通过本金求存款总额
");
 57         printf("2.通过目标总额求本金

");
 58         scanf("%d",&n);
 59         switch(n)
 60         {
 61         case 1:
 62             printf("请输入本金:");
 63             scanf("%lf",&money);
 64             printf("请输入存钱年数:");
 65             scanf("%d",&years);
 66             printf("请输入利率:");
 67             scanf("%lf",&r);
 68             for(i = 1 ; i<=years; i++)
 69             {
 70                 v=pow(1+r,i);
 71                 sum = v*money;  
 72                 printf("存入第%d年后的存款总额为:%.2lf
",i,sum); 
 73             }
 74             goto la1;
 75         case 2:
 76             printf("请输入目标金钱:");
 77             scanf("%lf",&sum);
 78             printf("请输入存钱年数:");
 79             scanf("%d",&years);
 80             printf("请输入利率:");
 81             scanf("%lf",&r);
 82             for(i = 1 ; i<=years; i++)
 83             {
 84                 v=pow(1+r,i);
 85             }
 86             money=sum/v;  
 87             printf("现在必须存入本金为:%.2lf


",money); 
 88             goto la1;
 89         }
 90         case 3:
 91             printf("请输入本金:");
 92             scanf("%lf",&money);
 93             printf("请输入目标金钱:");
 94             scanf("%lf",&sum);
 95             printf("请输入利率:");
 96             scanf("%lf",&r);
 97             C=A=1+r;
 98             B=sum/money;
 99             for(i=1;i<N;i++)
100             {
101                 C=C*A;
102                 if(C>=B)
103                 {
104                     break;
105                 }
106             }
107             printf("所需年数为%d


",i+1);
108             break;
109         case 4:
110             printf("请输入本金:");
111             scanf("%lf",&money);
112             printf("请输入存钱年数:");
113             scanf("%d",&years);
114             printf("请输入目标金钱:");
115             scanf("%lf",&sum);
116             B=sum/money;
117             y=1.0/years;
118             r=pow(B,y)-1;
119             printf("所求年利率为:%-.3lf


",r);
120             break;
121         case 5:printf("1.每月定投
");
122                printf("2.每年定投
");
123                scanf("%d",&n);
124             switch(n)
125             {
126             case 1:
127             printf("每月投入本金:");
128             scanf("%lf",&money);
129             printf("请输入存钱年数:");
130             scanf("%d",&years);
131             printf("请输入年利率:");
132             scanf("%lf",&r);
133             money=money*12;
134             for(i=1;i<=years;i++)
135             {
136                 v=pow(1+r,i);
137             }
138             Money=money*(1+r)*(-1+v)/r;
139             printf("%d年后本金和利息之和为:%lf


",years,Money);
140             goto la1;
141             case 2:
142                 printf("每年投入本金:");
143                 scanf("%lf",&money);
144                 printf("请输入存钱年数:");
145                 scanf("%d",&years);
146                 printf("请输入年利率:");
147                 scanf("%lf",&r);
148                 for(i=1;i<=years;i++)
149                 {
150                      v=pow(1+r,i);
151                 }
152                 Money=money*(1+r)*(-1+v)/r;
153                 printf("%d年后本金和利息之和为:%lf


",years,Money);
154                 goto la1;
155             }
156             case 6:
157                 printf("贷款数目:");
158                 scanf("%lf",&Money);
159                 printf("还钱期限(年):");
160                 scanf("%d",&years);
161                 printf("请输入年利率:");
162                 scanf("%lf",&r);
163                 for(i=1;i<=years;i++)
164                 {
165                      v=pow(1+r,i);
166                 }
167                 money=Money*r/(-1+v)/(1+r);
168                 money=money/12;
169                 printf("每月等额本息应还款:%lf


",money);
170                 break;
171 
172     case 0:
173         return 0;
174     }
175     }
176 }

原文地址:https://www.cnblogs.com/14fzf/p/5288171.html