复利程序(c语言)(张俊毅 周修文)

因为之前发烧一直没有了解这个 所以最近才补上 分数扣了就扣了 补上先

 单元测试迟点更

  1 #include<stdio.h>
  2 #include <math.h>
  3 #include <string.h>
  4 
  5 struct jilv{
  6     char lei[20];
  7     int nian;
  8     double li,money2,money;
  9 }num[20];
 10 
 11 void frame(){
 12     printf("\t\t*********************************\n");
 13     printf("\t\t*       请选择你需要的操作      *\n");
 14     printf("\t\t*      1、复利计算              *\n");
 15     printf("\t\t*      2、单利计算              *\n");
 16     printf("\t\t*      3、复利计算本金          *\n");
 17     printf("\t\t*      4、计算复利时间          *\n");
 18     printf("\t\t*      5、计算复利利率          *\n");
 19     printf("\t\t*      6、计算记录              *\n");
 20     printf("\t\t*      7、结束                  *\n");
 21     printf("\t\t*********************************\n");
 22 }
 23 fuli(int i){
 24     int a,b,c;
 25     double d,d2,result;
 26     strcpy(num[i].lei,"复利计算");
 27     printf("请输入本金:");
 28     scanf("%d",&a);
 29     num[i].money=a;
 30     printf("请输入利率:");
 31     scanf("%lf",&d);
 32     num[i].li=d;
 33     printf("请输入年限:");
 34     scanf("%d",&b);
 35     num[i].nian=b;
 36     d=1+d;
 37     d2=pow(d,b);
 38     result=a*d2;
 39     num[i].money2=result;
 40     printf("到期后本息为:%lf\n",result);
 41     i++;
 42 here:
 43     printf("********************\n");
 44     printf("1.继续计算\n2.上一层\n");
 45     scanf("%d",&c);
 46     if (c==1)
 47         fuli(i);
 48     else if (c==2)
 49         return i;
 50     else
 51     {
 52         printf("输入有误!\n");
 53         goto here;
 54     }
 55     return i;
 56 }
 57 danli(int i)
 58 {
 59     int a,b,d;
 60     double c,result;
 61     strcpy(num[i].lei,"单利计算");
 62     printf("输入本金:");
 63     scanf("%d",&a);
 64     num[i].money=a;
 65     printf("输入利率:");
 66     scanf("%lf",&c);
 67     num[i].li=c;
 68     printf("输入年限:");
 69     scanf("%d",&b);
 70     num[i].nian=b;
 71     result=a*c*b+a;
 72     num[i].money2=result;
 73     printf("到期后本息为:%lf\n",result);
 74     i++;
 75 here1:
 76     printf("********************\n");
 77     printf("1.继续计算\n2.上一层\n");
 78     scanf("%d",&d);
 79     if (d==1)
 80         danli(i);
 81     else if (d==2)
 82         return i;
 83     else
 84     {
 85         printf("输入有误!\n");
 86         goto here1;
 87     }
 88     return i;
 89 }
 90 benjin(int i)
 91 {
 92     int a,b,c;
 93     double d,d2,result;
 94     strcpy(num[i].lei,"复利本金");
 95     printf("输入期望:");
 96     scanf("%d",&a);
 97     num[i].money2=a;
 98     printf("输入年限:");
 99     scanf("%d",&b);
100     num[i].nian=b;
101     printf("输入利率:");
102     scanf("%lf",&d);
103     num[i].li=d;
104     d=1+d;
105     d2=pow(d,b);
106     result=a/d2;
107     num[i].money=result;
108     printf("你需要投入的本金为:%lf\n",result);
109     i++;
110 here2:
111     printf("********************\n");
112     printf("1.继续计算\n2.上一层\n");
113     scanf("%d",&c);
114     if (c==1)
115         benjin(i);
116     else if (c==2)
117         return i;
118     else
119     {
120         printf("输入有误!\n");
121         goto here2;
122     }
123     return i;
124 }
125 shijian(int i)
126 {
127     int c,n=0;
128     double a,b,d,d2,result2;
129     strcpy(num[i].lei,"复利时间");
130     printf("输入期望:");
131     scanf("%lf",&a);
132     num[i].money2;
133     printf("输入本金:");
134     scanf("%lf",&b);
135     num[i].money=b;
136     printf("输入利率:");
137     scanf("%lf",&d);
138     num[i].li=d;
139     result2=a/b;
140     d=1+d;
141     d2=d;
142     while (d<result2)
143     {
144         d=d*d2;
145         n++;
146     }
147     printf("%d  ",n);printf("%lf\n",result2);
148     printf("需要%d年才能达到期望\n",n);
149     num[i].nian=n;
150     i++;
151 here3:
152     printf("********************\n");
153     printf("1.继续计算\n2.上一层\n");
154     scanf("%d",&c);
155     if (c==1)
156         shijian(i);
157     else if (c==2)
158         return i;
159     else
160     {
161         printf("输入有误!\n");
162         goto here3;
163     }
164     return i;
165 }
166 lilv(int i)
167 {
168     int d,c;
169     double a,b,result,n2,n;
170     strcpy(num[i].lei,"复利利率");
171     printf("输入本金:");
172     scanf("%lf",&a);
173     num[i].money=a;
174     printf("输入期望:");
175     scanf("%lf",&b);
176     num[i].money2=b;
177     printf("输入年限:");
178     scanf("%d",&c);
179     num[i].nian=c;
180     n2=(double)c;
181     n=1/n2;
182     a=b/a;
183     result=pow(a,n);
184     printf("你需要找一个利率为%lf的理财工具\n",result-1);
185     num[i].li=result-1;
186     i++;
187 here4:
188     printf("********************\n");
189     printf("1.继续计算\n2.上一层\n");
190     scanf("%d",&d);
191     if (d==1)
192         lilv(i);
193     else if (d==2)
194         return i;
195     else
196     {
197         printf("输入有误!\n");
198         goto here4;
199     }
200     return i;
201 }
202 biao(int i)
203 {
204     int b;
205     printf("计算类型\t\t本金\t\t年限\t\t利率\t\t本息\n");
206     for (b=0;b<i;b++)
207     {
208         printf("%s\t%15.3lf %12d %15.3lf %15.3lf\n",num[b].lei,num[b].money,num[b].nian,num[b].li,num[b].money2);b++;
209     }
210 }
211 
212 main(){
213     int a,i=0,b=0;
214     /*for (b=0;b<20;b++)
215     {
216         num[b].money=0;
217     }
218     */
219     frame();
220     printf("输入需要操作的序号:");
221     scanf("%d",&a);
222     while(a>0&&a<=6)
223     {
224     switch (a)
225     {
226     case 1:
227         i=fuli(i);
228         break;
229     case 2:
230         i=danli(i);
231         break;
232     case 3:
233         i=benjin(i);
234         break;
235     case 4:
236         i=shijian(i);
237         break;
238     case 5:
239         i=lilv(i);
240         break;
241     case 6:
242         biao(i);
243     }
244     frame();
245     printf("输入需要操作的序号:");
246     scanf("%d",&a);
247     }
248     b=0;
249     
250 }

 

posted @ 2016-04-05 16:42  57张俊毅  阅读(1356)  评论(7编辑  收藏  举报