注意程序语句执行的顺序,循环体中money+=0.8*n是花钱的累加和,day++是天数:n*=2是计算下一天买苹果的数量。
初始值n=2,d=0
执行while循环
day++//1天,看到了吧,买2个苹果是第1天,而不是第0天
n*=2//这条语句你也写错了。计算第二天买的苹果数量
n<100,继续执行循环
money+=0.8*n//两天花的钱
day++//2天
n*=2//计算第三天买的苹果数量
n<100,继续执行,依次类推。
直到n*=2,n=128,不满足循环条件,退出循环,此时n的值是128没错,可是并没有计入花的钱以及天数。花的钱为5天花钱的总和,天数为5天。
#include <stdio.h>main(){
int na,np,nw,n // 个数,总个数
double va=0.4,vp=0.2,vw=4 // 单价
double v //总费用
for (na=0na<=100na++)
for (np=0np<=100np++)
for (nw=0nw<=100nw++){
v=na*va+np*vp+nw*vw
n=na+np+nw
if (n==100 &&v==40.0) //若总个数和总费用符合要求,则输出结果:
printf("Apple=%d Pear=%d Watermel=%d\n",na,np,nw)
}
return 0
}
结果:
Apple=5 Pear=90 Watermel=5
Apple=24 Pear=72 Watermel=4
Apple=43 Pear=54 Watermel=3
Apple=62 Pear=36 Watermel=2
Apple=81 Pear=18 Watermel=1
Apple=100 Pear=0 Watermel=0