1 #include<stdio.h>
2 #include<math.h>
3 #include<conio.h>
4 void tip()//計算公式和一些變量的介紹
5 {
6 printf("複利計算軟體\n");
7 printf(" 複利計算公式:F=P*pow((1+i/m),N*m)\n");
8 printf(" 單利計算公式:L=P*N*i;H=L+P\n");
9 printf("\tF:複利終值|年金終值\n");
10 printf("\tP:本金\n");
11 printf("\ti:利率\n");
12 printf("\tH:本利和\n");
13 printf("\tN:利率擷取時間的整數倍\n");
14 printf("\tm:年複利次數(一年當中的滾利次數)\n");
15 }
16 void menu()//菜單
17 {
18 printf("\t\t|-----------------------------------|\n");
19 printf("\t\t| welcome |\n");
20 printf("\t\t|-----------------------------------|\n");
21 printf("\t\t| 1:計算本金 |\n");
22 printf("\t\t| 2:計算年複利終值 |\n");
23 printf("\t\t| 3:單利計算 |\n");
24 printf("\t\t| 4:計算年份 |\n");
25 printf("\t\t| 5:計算年利率 |\n");
26 printf("\t\t| 6:等額定投(年|月) |\n");
27 printf("\t\t| 7:等額還款 |\n");
28 printf("\t\t| 0:結束 |\n");
29 printf("\t\t|-----------------------------------|\n");
30 printf("請輸入你要選擇的功能(0~7):");
31
32 }
33 void benjin()//計算本金
34 {
35 int N,m;
36 double i,F,P;
37 printf("複利終值:");
38 scanf("%lf",&F);
39 printf("年利率:");
40 scanf("%lf",&i);
41 printf("存入年限:");
42 scanf("%d",&N);
43 printf("年複利次數:");
44 scanf("%d",&m);
45 P=F/pow((1+i/m),N*m);
46 printf("年複利終值為%.4lf需要本金為:%.4lf\n",F,P);
47 }
48 void fuli()//計算複利終值
49 {
50 int N,m;
51 double i,F,P;
52 printf("存入本金:");
53 scanf("%lf",&P);
54 printf("年利率:");
55 scanf("%lf",&i);
56 printf("存入年限:");
57 scanf("%d",&N);
58 printf("年複利次數:");
59 scanf("%d",&m);
60 F=P*pow((1+i/m),N*m);
61 printf("複利終值:%.4lf\n",F);
62 }
63 void danli()//單利計算
64 {
65 int N;
66 double i,H,P,L;
67 printf("存入本金:");
68 scanf("%lf",&P);
69 printf("年利率:");
70 scanf("%lf",&i);
71 printf("存入年限:");
72 scanf("%d",&N);
73 L=P*N*i;
74 H=L+P;
75 printf("本息和為:%.4lf\n",H);
76 }
77 void years()//求年份
78 {
79 int N,m;
80 double i,F,P;
81 printf("複利終值:");
82 scanf("%lf",&F);
83 printf("存入本金:");
84 scanf("%lf",&P);
85 printf("年利率:");
86 scanf("%lf",&i);
87 printf("年複利次數:");
88 scanf("%d",&m);
89 N=(int)(log(F/P)/log(1+i/m)/m);
90 printf("從%.4lf到%.4lf需要%d年\n",P,F,N);
91 }
92 void annual_int_rate()//計算年利率
93 {
94 int N,m;
95 double i,F,P;
96 printf("複利終值:");
97 scanf("%lf",&F);
98 printf("存入本金:");
99 scanf("%lf",&P);
100 printf("存入年限:");
101 scanf("%d",&N);
102 printf("年複利次數:");
103 scanf("%d",&m);
104 i=m*(pow(F/P,1.0/(N*m))-1);
105 printf("從%.4lf到%.4lf需要%.4lf\n",P,F,i);
106 }
107 void YM_Equal_cast_final()//計算年金終值
108 {
109 int N,n;
110 double i,F,P;
111 printf("存入本金:");
112 scanf("%lf",&P);
113 printf("存入年限:");
114 scanf("%d",&N);
115 printf("年利率:");
116 scanf("%lf",&i);
117 printf("\t\t1:按年投資\n\t\t2:按月投資\n");
118 A:printf("請選擇你要的功能<1|2>:");
119 scanf("%d",&n);
120 if(n==1)
121 {
122 F=P*(pow(1+i,N)-1)/i;
123
124 }
125 else if(n==2)
126 {
127 F=P*12*(1+i)*(pow(1+i,N)-1)/i;
128 }
129 else
130 {
131 printf("輸入有誤!請重新輸入\n");
132 goto A;
133 }
134 printf("%d年後的總産值:%.4lf\n",N,F);
135
136 }
137 void Average_capital_plus_interest()
138 {
139 int N;
140 double i,F,P;
141 printf("貸款金額:");
142 scanf("%lf",&F);
143 printf("存入年限:");
144 scanf("%d",&N);
145 printf("年利率:");
146 scanf("%lf",&i);
147 P=F*i/(12*(1+i)*(pow(1+i,N)-1));
148 printf("貸款%.4lf每月需要還款%.4lf\n",F,P);
149 }
150 void main()
151 {
152 int n;
153 while(1)
154 {
155 tip();
156 menu();
157 B:scanf("%d",&n);
158 if(n>=0&&n<=7)
159 {
160 if(n==0)
161 break;
162 switch(n)
163 {
164 case 1:
165 benjin();break;
166 case 2:
167 fuli();break;
168 case 3:
169 danli();break;
170 case 4:
171 years();break;
172 case 5:
173 annual_int_rate();break;
174 case 6:
175 YM_Equal_cast_final();break;
176 case 7:
177 Average_capital_plus_interest();break;
178 case 0:n=0;break;
179
180 }
181 }
182 else
183 {
184 printf("輸入超出範圍,請重新輸入:");
185 goto B;
186 }
187 getch();
188 }
189 }
複利計算4.0