解题思路:
1、第一个while(1) 是考虑到循环输入的问题,在 Nums == 0 时,跳出循环。
2、第二个while(1) 循环中是将 每一次 兑换过程当作一次循环,// 这个地方是一定要想清楚的,写程序时 一定要明确你的每次循环的目的是什么, 输入 、输出分别是啥?
定义了如下变量:
drinks: 最终兑换的汽水总数;
drinked: 每一次兑换中 兑到的最大汽水总数;
Nums: 当前拥有的空汽水瓶数。
Tips: 运算符号 / : 运算取整 %: 运算取余 。
不知道是否是毕业太久,还是基础不扎实。 还是会在某一刻 对这两个运算符的 用法 产生混淆, 特此在这里写出来提醒自己
#include <stdio.h>
int main(void) {
while (1) {
int Nums = -1;
scanf("%d", &Nums);
if(Nums == 0) {
printf("\n");
break;
}
unsigned int drinks = 0;
while(1) {
if(Nums ==1 ) {
printf("%d\n", drinks);
break;
} else if (Nums ==2) {
printf("%d\n", drinks+1);
break;
}
unsigned int drinked = 0;
drinked = Nums/3;
drinks += drinked; // 加上每一轮兑换所 喝掉的汽水
Nums = Nums%3 +drinked; // 当前拥有的空瓶数 = 本次兑换剩下的空瓶 + 喝掉本次兑换的汽水后产生的空瓶数
}
}
return 0;
}