解题思路:

1.因为没有给具体的循环数量,需要根据b(空瓶子)数量而定,所以用do-while循环,先进入循环再cin>>b。

2.每次喝下的空瓶子都还可以兑换饮料,因此无法判断循环次数,内循环也要用while,并用一个标志(flag),判断是否还能兑换饮料。

3.内循环可以分为三种情况,b小于二(没希望了喝不到饮料了),b大于二(还可以换,要重新计算b,因为瓶子换掉了),b等于二(喝最后一瓶了)
注意事项:
        内循环三个判断先先后次序不可以更改,因为要合乎事实,小于二想喝也不能换,大于二可以操作下,等于二欠老板个人情
参考代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int b;       //动态数据,空瓶子(bottle)
    do
    {
        cin>>b;
        if(b==0) break;           //如果为0,直接结束循环
        int flag=1,drink=0;       //flag为一个空瓶子大于等于2的标志,drink为累计喝掉的数量
        while(flag!=0)
        {
            if(b<2) {flag=0;}     //小于2,说明没有再换的可能了,直接令标志为零
            else if((int)b/3)     //大于2,的情况
            {
                drink+=(int)b/3;  //先将喝掉的加到drink中
                b=(int)b/3+b%3;   //下一次判断的b为本次换来喝掉的加余下的
            }
            if(b==2)              //等于2,这个判断也可以写到上一个里面,所以不加else   
            {
                drink++;
                flag=0;
            }
        }
        cout<<drink<<endl;        //输出
    }while(b!=0);
    
    return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论