欢迎光临
我们一直在努力

C语言学习笔记20260613-喝汽水问题

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个空瓶,无法继续兑换

  • 赞(0)
    未经允许不得转载:171主机测评 » C语言学习笔记20260613-喝汽水问题
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址