1 #include<stdio.h> 2 #include<math.h> 3 #include<conio.h> 4 void tip()//计算公式和一些变量的介绍 5 { 6 printf("复利计算软件 "); 7 printf(" 复利计算公式:F=P*pow((1+i/m),N*m) "); 8 printf(" 单利计算公式:L=P*N*i;H=L+P "); 9 printf(" F:复利终值|年金终值 "); 10 printf(" P:本金 "); 11 printf(" i:利率 "); 12 printf(" H:本利和 "); 13 printf(" N:利率获取时间的整数倍 "); 14 printf(" m:年复利次数(一年当中的滚利次数) "); 15 } 16 void menu()//菜单 17 { 18 printf(" |-----------------------------------| "); 19 printf(" | welcome | "); 20 printf(" |-----------------------------------| "); 21 printf(" | 1:计算本金 | "); 22 printf(" | 2:计算年复利终值 | "); 23 printf(" | 3:单利计算 | "); 24 printf(" | 4:计算年份 | "); 25 printf(" | 5:计算年利率 | "); 26 printf(" | 6:等额定投(年|月) | "); 27 printf(" | 7:等额还款 | "); 28 printf(" | 0:结束 | "); 29 printf(" |-----------------------------------| "); 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 ",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 ",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 ",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年 ",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 ",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(" 1:按年投资 2:按月投资 "); 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("输入有误!请重新输入 "); 132 goto A; 133 } 134 printf("%d年后的总产值:%.4lf ",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 ",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 }