方法一:根据题目条件循环判断

#include <stdio.h>

int main()
{
    int num = 0;
    while(scanf("%d", &num))
    {
        int ret = 0;
        if(num == 0)
        {
            break;
        }
        
        while(num > 1)	//1个空瓶==0
        {
            if(num >= 3)
            {
                num -= 3;	//少3个空瓶
                ret++;		//多1个汽水
                num++;		//多1个空瓶
            }
            else if(num == 2)
            {
                ret++;		//可换1个汽水
                num = 0;
            }
        }
        printf("%d\n", ret);
    }
    return 0;
}

方法二:嵌套

#include <stdio.h>

int nester(int n)	//函数嵌套
{
    int ret = 0;
    int x = 0;
    int y = 0;
    if(n == 1)
    {
        ret =  0;
    }
    else if(n == 2)
    {
        ret = 1;
    }
    else
    {
        x = n % 3;    //剩余几个空瓶
        y = n / 3;    //喝完有几个空瓶
        ret = y;
        ret += nester(x+y);    //嵌套函数
    }
    return ret;
}

int main()
{
    int num = 0;
    while(scanf("%d", &num))
    {
        int ret = 0;
        if(num == 0)
        {
            break;
        }

        ret = nester(num);

        printf("%d\n", ret);
    }
    return 0;
}