c语言——喝汽水问题

本文介绍了c语言中一个有趣的喝汽水问题:20元购买汽水,每瓶1元,2个空瓶换1瓶。思路包括:确保钱数等于汽水数,计算空瓶数进行兑换,以及通过分析空瓶子的循环来得出最终能喝到的汽水数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以买多少汽水。

问题思路:

(1)可以确保的是有多少钱就可以喝多少瓶汽水;

(2)计算空瓶数,只要空瓶数大于1,就可以换取汽水。

#include<stdio.h>
#include<windows.h>
int popNumber(unsigned int money)
{
	int pop = money;
	int empty = money;
	while (empty>1)
	{
		pop += empty / 2;
		empty = empty / 2 + empty % 2;
	}
	return pop;
}
int main()
{
	unsigned int money = 0;
	printf("请输入金钱数:>\n");
	scanf("%d", &money);
	int ret=popNumber(money);
	printf("%d\n", ret);
	system("pause");
	return 0;
}

还有另外一种思路(可参考)

因最终停止换汽水的时候,人手里肯定是有一个空瓶子的。假如今天你有20块钱,一瓶汽水一块钱,两个空瓶子可以换取一瓶汽水,也就是说一块钱可以买两个空瓶子,20块钱可以买40个空瓶子。

除去最后留下来的一瓶汽水外,剩下的39瓶空瓶子均会归还给店家,即买了39瓶。

#include<stdio.h>
#include<windows.h>
int popNumber(unsigned int money)
{
	int pop = money;
	return pop*2-1;
}
int main()
{
	unsigned int money = 0;
	printf("请输入金钱数:>\n");
	scanf("%d", &money);
	int ret = popNumber(money);
	printf("%d\n", ret);
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值