海因克斯三冠王:c语言的问题

来源:百度文库 编辑:高考问答 时间:2024/04/27 19:38:52
题目是这样的:
有五种存款方式:定期存款一年,利率是%2.25;两年的是%2.243;三年的是%2.70;五年的是2.88;8年的是%3.00。现有2000元,欲存入银行20年,问各种存款方式如何组合,可以使20年后的本息和最多。我看了答案,还是有点不明白。

#include<stdio.h>
#include<math.h>
main()
{
int i1,i2,i3,i5,i8,n1,n2,n3,n4,n5,n8;
double max=0,total;
for(i1=0;i1<=20;i1++)
for(i2=0;i2<=(20-i1)/2;i2++)
for(i3=0;i3<=(20-i1-i2*2)/3;i3++)
for(i5=0;i5<=(20-i1-i2*2-i3*3)/5;i5++)
{
i8=(20-i1-i2*2-i3*3-i5*5)/8;
total=2000*pow(1+0.0225,i1)
*pow(1+0.00243,i2)
*pow(1+0.0270,i3)
*pow(1+0.0288,i5)
*pow(1+0.0300,i8);
if(total>max)
{
max=total;
n1=i1;
n2=i2;
n3=i3;
n5=i5;
n8=i8;

}
}
其中的“if(total>max)"一句不懂,max的初值是0,total是正数,那total>max就恒成立了。??这句话到底有什么作用呢?

total=2000*pow(1+0.0225,i1) // 计算采用这种分配方法可以的总钱数目
*pow(1+0.00243,i2)
*pow(1+0.0270,i3)
*pow(1+0.0288,i5)
*pow(1+0.0300,i8);
if(total>max) //如果 上面计算出来的数大于 max
{
max=total; // 就让 max中保存这个计算出来的数,max这这里有修改了