1 #include<stdio.h> 2 #include<math.h> 3 #include<conio.h> 4 5 6 void benjin()//计算本金 7 { 8 int N,m; 9 double i,F,P; 10 printf("复利终值:"); 11 scanf("%lf",&F); 12 while(F<=0 || F>999999999) 13 { 14 printf("输入错误,请重新输入大于0的本金: "); 15 scanf("%lf",&F); 16 } 17 printf("年利率:"); 18 scanf("%lf",&i); 19 while(i<=0 || i>=1) 20 { 21 printf("输入错误,请重新输入0~1之间的利率: "); 22 scanf("%lf",&i); 23 } 24 printf("存入年限:"); 25 scanf("%d",&N); 26 while(N<=0 || N>100) 27 { 28 printf("输入错误,请重新输入0~100之间的年限: "); 29 scanf("%d",&N); 30 } 31 printf("年复利次数:"); 32 scanf("%d",&m); 33 while(m<=0) 34 { 35 printf("输入错误,请重新输入大于0的复利次数: "); 36 scanf("%d",&m); 37 } 38 P=F/pow((1+i/m),N*m); 39 printf("年复利终值为%.4lf需要本金为:%.4lf ",F,P); 40 } 41 void fuli()//计算复利终值 42 { 43 int N,m; 44 double i,F,P; 45 printf("存入本金:"); 46 scanf("%lf",&P); 47 while(P<=0 || P>999999999) 48 { 49 printf("输入错误,请重新输入大于0的本金: "); 50 scanf("%lf",&P); 51 } 52 printf("年利率:"); 53 scanf("%lf",&i); 54 while(i<=0 || i>=1) 55 { 56 printf("输入错误,请重新输入0~1之间的利率: "); 57 scanf("%lf",&i); 58 } 59 printf("存入年限:"); 60 scanf("%d",&N); 61 printf("年复利次数:"); 62 scanf("%d",&m); 63 F=P*pow((1+i/m),N*m); 64 printf("复利终值:%.4lf ",F); 65 } 66 void danli()//单利计算 67 { 68 int N; 69 double i,H,P,L; 70 printf("存入本金:"); 71 scanf("%lf",&P); 72 while(P<=0 || P>999999999) 73 { 74 printf("输入错误,请重新输入大于0的本金: "); 75 scanf("%lf",&P); 76 } 77 printf("年利率:"); 78 scanf("%lf",&i); 79 while(i<=0 || i>=1) 80 { 81 printf("输入错误,请重新输入0~1之间的利率: "); 82 scanf("%lf",&i); 83 } 84 printf("存入年限:"); 85 scanf("%d",&N); 86 L=P*N*i; 87 H=L+P; 88 printf("本息和为:%.4lf ",H); 89 } 90 void years()//求年份 91 { 92 int N,m; 93 double i,F,P; 94 printf("复利终值:"); 95 scanf("%lf",&F); 96 printf("存入本金:"); 97 scanf("%lf",&P); 98 printf("年利率:"); 99 scanf("%lf",&i); 100 while(i<=0 || i>=1) 101 { 102 printf("输入错误,请重新输入0~1之间的利率: "); 103 scanf("%lf",&i); 104 } 105 printf("年复利次数:"); 106 scanf("%d",&m); 107 N=(int)(log(F/P)/log(1+i/m)/m); 108 printf("从%.4lf到%.4lf需要%d年 ",P,F,N); 109 } 110 void nianlilv()//计算年利率 111 { 112 int N,m; 113 double i,F,P; 114 printf("复利终值:"); 115 scanf("%lf",&F); 116 printf("存入本金:"); 117 scanf("%lf",&P); 118 printf("存入年限:"); 119 scanf("%d",&N); 120 printf("年复利次数:"); 121 scanf("%d",&m); 122 i=m*(pow(F/P,1.0/(N*m))-1); 123 printf("从%.4lf到%.4lf需要%.4lf ",P,F,i); 124 } 125 void nianjinzhongzhi()//计算年金终值 126 { 127 int N,n; 128 double i,F,P; 129 printf("存入本金:"); 130 scanf("%lf",&P); 131 while(P<=0 || P>999999999) 132 { 133 printf("输入错误,请重新输入大于0的本金: "); 134 scanf("%lf",&P); 135 } 136 printf("存入年限:"); 137 scanf("%d",&N); 138 printf("年利率:"); 139 scanf("%lf",&i); 140 while(i<=0 || i>=1) 141 { 142 printf("输入错误,请重新输入0~1之间的利率: "); 143 scanf("%lf",&i); 144 } 145 printf(" 1:按年投资 2:按月投资 "); 146 A:printf("请选择你要的功能<1|2>:"); 147 scanf("%d",&n); 148 if(n==1) 149 { 150 F=P*(pow(1+i,N)-1)/i; 151 152 } 153 else if(n==2) 154 { 155 F=N*12*(P*(i/12)+P); 156 } 157 else 158 { 159 printf("输入有误!请重新输入 "); 160 goto A; 161 } 162 printf("%d年后的总产值:%.4lf ",N,F); 163 164 } 165 void benxi()//本息 166 { 167 double F,i,P; 168 int N; 169 printf("输入贷款金额:"); 170 scanf("%lf",&F); 171 printf("输入贷款时间(年):"); 172 scanf("%D",&N); 173 printf("输入年利率:"); 174 scanf("%lf",&i); 175 while(i<=0 || i>=1) 176 { 177 printf("输入错误,请重新输入0~1之间的利率: "); 178 scanf("%lf",&i); 179 } 180 P=F*i/(12*(1+i)*(pow(1+i,N)-1)); 181 printf("贷款%.4lf每月需要还款:%.4lf ",F,P); 182 183 } 184 void menu()//菜单 185 { 186 printf(" |-----------------------------------| "); 187 printf(" | 欢迎欢迎 | "); 188 printf(" |-----------------------------------| "); 189 printf(" | 1:计算本金 | "); 190 printf(" | 2:计算年复利终值 | "); 191 printf(" | 3:单利计算 | "); 192 printf(" | 4:计算年份 | "); 193 printf(" | 5:计算年利率 | "); 194 printf(" | 6:年金终值 | "); 195 printf(" | 7:贷款金额 | "); 196 printf(" | 0:结束 | "); 197 printf(" |-----------------------------------| "); 198 printf("请输入你要选择的功能(0~7): "); 199 200 } 201 void main() 202 { 203 int n; 204 while(1) 205 { 206 menu(); 207 scanf("%d",&n); 208 if(n==0) 209 break; 210 switch(n) 211 { 212 case 1: 213 benjin();break; 214 case 2: 215 fuli();break; 216 case 3: 217 danli();break; 218 case 4: 219 years();break; 220 case 5: 221 nianlilv();break; 222 case 6: 223 nianjinzhongzhi();break; 224 case 7: 225 benxi();break; 226 case 0:n=0;break; 227 228 } 229 getch(); 230 } 231 }