风雨无阻


私信TA

用户名:dotcpp0743622

访问量:332

签 名:

等  级
排  名 20327
经  验 657
参赛次数 0
文章发表 10
年  龄 99
在职情况 学生
学  校 郑州大学
专  业 软件工程

  自我简介:

解题思路:

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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区