代码实现:
#include<stdio.h>
int main()
{
int money = 0;
printf("每瓶汽水1元,每两个空瓶可以换一瓶汽水,请问您有多少钱?\n");
scanf_s("%d", &money);
int count = money;
int empty = money;
while (!(empty == 0 || empty == 1))
{
count += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("您最多喝到%d瓶的汽水。\n", count);
return 0;
}
代码解释:
注意事项:
当我们的钱数为 20 元时,最多是喝到 39瓶汽水的。
但看下面的代码:
empty 经过处理后是手里剩下的瓶子数(因为加了 %2 的瓶数)并不等于实际上这次喝的汽水数,所以结果会错误。
此外,上述两个代码的实现,与 while 循环的判断条件和代码块中代码实现顺序有关:
(望大家多多支持!)