原题:阳阳第一天买了两个苹果,一个苹果0.8元。从第二天开始,他每天购买前一天苹果数量的2倍,直到购买的苹果个数达到不超过100的最大值。编程求阳阳平均每天花多少钱?
编程思路:
假设阳阳每天购买苹果的数量为n个,花的钱的总数记为money , 由题意可以推导出公式:money = money + 0.8 * n,
这里表示之前买苹果花钱的总额加上今天花钱买苹果的总和,我们还应当注意一下n的变化,随着天数的增加,他每天购买的前一天苹果数量的2倍,随着天数的增加,这里我们将天数定义为day ,当day++时,n值是变化的,为n = n * 2 ,且n的初始化值应当为2,因为阳阳第一天就已经买了2个苹果。
上面的这个过程在循环中执行,那么什么是循环的结束条件呢?我们看到题目上写了,直到购买的苹果个数达到不超过100的最大值的时候,满足条件,循环退出。那这个条件如何推导?很简单,也就是n < 100 。
这样,通过我们的while循环就可以计算出money的总和,也就是不超过100的花钱的总和,求出来之后,我们将money的总和去除以day天数,那么结果不就出来了吗?
写代码:
#include <stdio.h> int main(void) { int n = 2 , day = 0; //n的初始化值为2 float money = 0 , avg ; while(n < 100) //条件,当n < 100的时候 { money+=0.8*n ; //我们的总和根据money = money + 0.8 * n,这个公式计算</span> day++ ; //让天数自加 n*=2 ; //当day++时,n值是变化的,为n = n * 2 </span> } avg = money / day ; //求平均数 printf("%0.6f\n",avg); //输出平均值 return 0 ; }运行结果: