解题思路:
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;
}