解题思路: 换汽水这个游戏规则中 当空瓶子数量 n大于等于2时 都可以用来换新的汽水 而当n小于2时 则不满足换汽水的条件 结束
这里可以用两个循环
第一个循环表示每次输入的汽水瓶数量,当n为0时 ,表示输入结束, 退出循环;
第二个循环开始时,定义三个变量,x用来表示第i次交换时的汽水瓶数(包括空的和不空的,因为只要数量满足都可以用来换嘛) y用来表示每一次换完之后还剩下几个瓶子,cnt自然就是每一次交换,都得到多少汽水
第二个循环就用来鉴别是否满足进行交换的条件 这里用x/3是否为0来判断 当退出循环后 因为x=2也满足退出循环的条件 所以可以在加一个判断语句 x如果等于 就让cnt+1; 最后再输出cnt;
注意事项:
其实这里代码还是可以继续优化的 比如scanf这里就可以放在第一个while里面 写成while(scanf("%d",&n) && n) 表示输入n且n不为0;
参考代码:
#include<stdio.h>
int main(void)
{
int n;
scanf("%d",&n);
while(n)
{
int x=n;
int y=0;
int cnt=0;
while(x/3)
{
y=x%3;
cnt+=x/3;
x=x/3+y;
}
if(x==2)
{
cnt++;
}
printf("%d\n",cnt);
scanf("%d",&n);
}
return 0;
}
0.0分
1 人评分