一、问题描述:
假设银行整存整取的月利率为
二、设计思路:
三、程序流程图:
四、代码实现:
#include<stdio.h> #include<math.h> int main() { int x1,x2,x3,x5,x8; int y1,y2,y3,y5,y8; double temp; double max=0.0; for(x8=0;x8<=2;x8++){ for(x5=0;x5<=(20-8*x8)/5;x5++){ for(x3=0;x3<=(20-8*x8-5*x5)/3;x3++){ for(x2=0;x2<=(20-8*x8-5*x5-3*x3)/2;x2++){ for(x1=0;x1<=20-8*x8-5*x5-3*x3-2*x2;x1++){ temp=2000.0*pow((1+1*0.0063*12),x1) *pow((1+2*0.0066*12),x2) *pow((1+3*0.0069*12),x3) *pow((1+5*0.0075*12),x5) *pow((1+8*0.0084*12),x8); if(temp>max) { max=temp; y1=x1; y2=x2; y3=x3; y5=x5; y8=x8; } } } } } } printf("获得利息最多的存款方式为:\n"); printf("8年期的存了%d次\n",y8); printf("5年期的存了%d次\n",y5); printf("3年期的存了%d次\n",y3); printf("2年期的存了%d次\n",y2); printf("1年期的存了%d次\n",y1); printf("20年后的最大存款为:"); printf("%0.2f",max); return 0; }
这个问题主要是建立等式,找每个的范围,有了范围就可以用循环暴力解出来,有趣的是用了对应的y来表示存了多少次,更直观,此题还要注意double双精度的定义和输出格式啥的,还有还有pow函数大家还记得吧,pow(a,b)表示的是a的b次方,a、b及函数值都是double型 ,然后就是利用函数时要加头文件#include<math.h>。这几天烦心事很多,又是一个人过的五一,五一节狂敲代码,来弥补自己精神上的空虚,哈哈,软工人的自娱自乐。
标签:年期,double,问题,y8,printf,y1,y3,存钱 From: https://www.cnblogs.com/bzsc/p/17353723.html