// 喝汽水,根据规则求出最多喝多少瓶
规则:
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
//给20元,可以多少汽水。
//编程实现。
解题思路:
1> 先算出用金钱可以买多少瓶汽水;
2> 再计算出用瓶子可以换多少瓶汽水,此时需要判断奇数的个数,因为每出现
一次奇数,汽水就会减1,所以统计后对减去的汽水瓶除2求的剩余交换汽水数
3> 最后两者相加,输出 。
源代码:
#include<stdio.h>
#include<stdlib.h>
#define Y 1
//2.喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,
//给20元,可以多少汽水。
//编程实现。
int Number(int n)
{
int i = 0;
int count = 0;
while (n / 2 != 0)
{
n = n / 2;
count++;
}
return count;
}
void SteamWater(int n)
{
int sum = 0;
int sum1 = 0;
int count = 0;
//求金钱可以买到的所有瓶
sum += n / Y;
//根据规则计算可以换多少汽水
int number = Number(sum);
//计算多和的汽水数
for (int i = 0; i <= number; i++)
{
//对奇数求个数
if (sum % 2 != 0)
{
count++;
}
sum1 = sum1 + sum;
sum = sum / 2;
}
sum = sum1 + count / 2;
printf("%d\n", sum);
}
int main()
{
SteamWater(20);
system("pause");
return 0;
}
运行结果:

建议:遇到多重循环尽量写成函数,减少时间复杂度;
这是一篇关于使用C语言解决喝汽水问题的博客。规则是1瓶汽水1元,2个空瓶可以换一瓶。首先计算金钱可购买的汽水数,然后处理空瓶兑换,考虑奇数空瓶的影响,最后得出总共能喝的汽水数量。博主提供了解题思路和源代码,并给出了运行结果。

1802

被折叠的 条评论
为什么被折叠?



