一个关于喝汽水的趣味编程

假设我们手上有20元,现在我们想喝汽水,老板说一瓶汽水一元,并且两个空瓶子可以再换一瓶汽水.
那么我们最多可以喝多少瓶汽水呢?
首先我们将思路理清
手上有20元,也就说我们一开始可以喝20瓶汽水
将20瓶汽水喝光,我们手上会有20个空瓶子,可以再换10瓶汽水
全部喝光有10个空瓶子,再换5瓶汽水
喝完有5个瓶子,可以换2瓶汽水
此时我们的手头有2瓶汽水,1个空瓶子
喝完汽水,我们又可以换一瓶
这个时候,手上是一瓶汽水,一个空瓶子
喝完我们又有两个空瓶子又可以换一瓶
至此,达到喝汽水瓶数最大值,也就是20 + 10 + 5 + 2 + 1 + 1 = 39瓶.
理清这个思路,来看完整代码

#include <stdio.h>
#include <stdlib.h>
int main(){
	int money;
	int empty;
	int count;
	printf("请输入现金数目: ");
	scanf("%d",&money);	//输入我们手上有的现金数()
	empty = money;	//用empty表示空瓶子的数目
	count = money;	//用count来表示我们可以喝的瓶数
	一开始空瓶子和可以喝汽水的瓶数的初值都与现金数相同
	while (empty >= 2){	//只要空瓶子的数目大于等于2,就可以拿去跟老板换汽水,也就是进入循环
		count = count + empty / 2;	//可以喝的汽水数目就是现金买到的和瓶子交换的
		empty = empty / 2 + empty % 2;	//若空瓶数目为2的倍数,除以2就是空瓶数目,否则要再模2(是2的倍数时,模2即为0)
	}
	printf("可以喝%d瓶汽水!\n",count);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44781107/article/details/90178200