C语言学习笔记20260613-喝汽水问题
一、题目要求
1. 一瓶汽水 1元
2. 2个空瓶 可以兑换 1 瓶新汽水
3. 输入任意金额,编程计算:最多可以喝多少瓶汽水,最后剩余多少空瓶
二、解题核心思路
1. 初始:用钱购买汽水,喝的总数 = 金额,空瓶数 = 金额
2. 循环兑换:只要空瓶数量 ≥ 2,持续兑换汽水
3. 每次兑换规则:
-
可兑换瓶数 = 当前空瓶数 / 2
-
剩余旧空瓶 = 当前空瓶数 % 2
-
最新空瓶数 = 剩余旧空瓶 + 本次兑换喝完的新空瓶
4. 终止条件:空瓶数量不足2个,无法继续兑换
三、完整可运行代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 喝汽水问题:1元1瓶,2空瓶换1瓶
int main()
{
int money;
printf("请输入拥有的金额:");
scanf("%d", &money);
int total = money; // 总喝的汽水数:初始花钱购买的数量
int empty = money; // 初始空瓶数:买多少瓶就有多少空瓶
// 空瓶数量大于等于2,可以持续兑换汽水
while (empty >= 2)
{
int change = empty / 2; // 本次循环可以兑换的汽水数量
total += change; // 累加本次兑换的汽水,更新总数量
// 核心公式:更新空瓶
// empty % 2:兑换后剩余无法兑换的旧空瓶
// change:新喝的汽水产生的新空瓶
empty = empty % 2 + change;
}
// 输出最终结果
printf("总共可以喝汽水:%d瓶\\n", total);
printf("最后剩余空瓶:%d个\\n", empty);
return 0;
}
四、核心变量详解
-
money:用户输入的初始金额
-
total:累计喝到的汽水总数量
-
empty:实时更新的空瓶数量
-
change:每一轮循环,空瓶可兑换的汽水数量
五、关键核心公式
empty = empty % 2 + change;
本题最核心代码:
empty % 2:兑换后剩下的、不够兑换的残余空瓶
change:新兑换的汽水喝完后,产生的新空瓶
两者相加,得到新一轮循环的空瓶总数
六、运行测试示例
示例1:输入 20
请输入拥有的金额:20
总共可以喝汽水:39瓶
最后剩余空瓶:1个
七、题目规律总结
固定规则:2个空瓶换1瓶汽水
无论输入多少合法金额,最后必然剩余1个空瓶,无法继续兑换


