喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,可以分两步:
第一步,买的汽水,钱数/一瓶汽水的价钱=买的汽水总数。
第二步,置换的汽水,空瓶数/2=置换的汽水数,喝完置换汽水的空瓶继续置换...
法一:
#include <stdio.h>
int main() {
//喝汽水
int money = 0;
printf("请输入钱数>");
scanf("%d", &money);
//买的
int total = money;
//置换的
int empty = money;
while (empty >= 2) {
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("一共可以喝%d瓶汽水。\n",total);
return 0;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/2ae538bf2da49c580cbc3fab56fbecb7.jpeg)
法二:根据规律可知喝汽水总数=钱数*2-1
#include <stdio.h>
int main() {
int money = 0;
printf("请输入钱数>");
scanf("%d", &money);
int total2 = 0;
if (money > 0) {
total2 = 2 * money - 1;
}
printf("一共可以喝%d瓶汽水。\n",total2);
return 0;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/66c2b1027c66349c973ab455bead5a3a.jpeg)
法三:
#include <stdio.h>
int main() {
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水?
int money = 0;
printf("请输入钱数>");
scanf("%d", &money);
int bottle = 0;//空瓶数
while (money) {
money--;
bottle++;
if (0 == bottle % 2) {
money++;
}
}
printf("一共可以喝%d瓶汽水。\n",bottle);
return 0;
}
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/d87a3050ccb084ae6e140471767f50d6.jpeg)