题目:
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。
题目分析:
首先题目给出了单价和钱数,也就是说我的20元能够买20瓶汽水,而20瓶汽水又对应20个瓶子,2个瓶子对应1瓶汽水,所以我们需要计算瓶数,将瓶数转化为钱数,方便计算。每次用瓶子换汽水都会又有新的瓶子,直到瓶子数量小于2就不能再换了。
代码实现:
#include<stdio.h>
//喝汽水问题 法一
int main()
{
int money = 0; //钱数
int total = 0; //总汽水数量
int empty = 0; //空瓶数量
printf("输入钱数\n");
scanf("%d", &money);
total = money;
empty = money;
while (empty > 1)
{
total += empty / 2;
empty = empty / 2 + empty % 2;
}
printf("能喝的瓶数为%d\n", total);
return 0;
}
方法一运行结果:
方法二:
通过观察上面的结果我们不难发现,喝汽水的瓶数总是等于我们的输入钱数*2-1,。公式为:money*2-1。可以总结为以下的代码。
#include<stdio.h>
//法二
int main()
{
int money = 0;
int total = 0;
int empty = 0;
printf("输入钱数\n");
scanf("%d", &money);
if (money <= 0)
{
total = 0;
}
else
{
total = money * 2 - 1;
}
printf("总共可以喝%d瓶\n", total);
return 0;
}