黑白判官


私信TA

用户名:uq_71646286210

访问量:292

签 名:

等  级
排  名 7157
经  验 1340
参赛次数 0
文章发表 9
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:判断我问手里空汽水瓶的个数,大于0小于三的时候是不可以换饮料的,所以此时输出0;当手里的饮料空饮料瓶大于等于三的时候定义for循环,开始“数瓶子”,因为三个空瓶子可以换一瓶饮料所以当数到三的时候就默默地给咱自己多加一个瓶子,又因为当只剩两个瓶子的时候可以向老板借一个,所以当我们原本就有的瓶子的数量加上咱们自己默默给自己加上的瓶子数量-2=咱们现在数的数时能换的饮料数量加一并且退出计数。ps:结合代码看更容易理解。

注意事项:给自己默默加上瓶子后就要进行比较了,看看-2之后是否等于当前计数。

参考代码:

#include<stdio.h>
int main()
{
    int x;
    while(1)
    {x
        int count=0;        //用来计算我们可以换取的饮料数量(咱们默默给自己手中饮料瓶增加的数量)
        scanf("%d",&x);
        if(x==0)            //因为输入零不做运行,所以break;当然从scanf开始到这一步可以在开始的时候用while(scanf("%d",&x)&&x)代替
            break;
        if(x<3&&x>0)
        {
            printf("%d\n",0);
            continue;        //不能换饮料——这里用continue是为了帮助大家理解Continue和break的区别:前者是跳过后面的步骤再次开始循环;后者是结束循环。
        }
        else
            
        {
            for(int i=1;i<=x;i++)
            {
                if(i%3==0)
                {
                    count=count+1;
                    x=x+1;         //数到三的倍数就说明可以换饮料了,默默给自己的空饮料瓶+1吧。
                if(i==x-2)
                {
                    count++;
                    break;        //现在还有两个瓶子,可以给老板借一个了,瓶子数到头了,退出循环。
                }
                }
            }
        }
        printf("%d\n",count);
    }
    return 0;
}

 

0.0分

1 人评分

  评论区

这是优化之后的:
#include<stdio.h>
int main()
{
	int x;
	while(scanf("%d",&x)&&x!=0)
	{
		int count=0;
		{
			for(int i=1;i<=x;i++)
			{
				if(i%3==0)
				{
					count=count+1;
					x=x+1;
					if(i==x-2)
					{
						count++;
						break;
					}
				}
			}
		}
		printf("%d\n",count);
	}
	return 0;
}
2023-10-21 16:13:32
  • «
  • 1
  • »