复利程序(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 }