【C语言刷题系列】喝汽水问题
文章目录
一、文章简介
1.先买再换
1.1 代码逻辑:
1.2 完整代码
1.3 运行结果
1.4 根据方法一总结优化
2.边买边换
2.1 代码逻辑:
2.2 完整代码
2.3 运行结果
一、文章简介
本文所述专栏——C语言经典编程问题 C语言刷题_倔强的石头106的博客-CSDN博客
喝汽水问题是一个经典的编程问题。
在这个问题中,你初始有n元钱,每瓶汽水1元。并且喝完汽水之后,每2个空瓶子可以换一瓶汽水。求可以喝到多少瓶汽水。
解决此问题所需的C语言知识储备【C语言基础篇】结构控制(中)循环结构-CSDN博客
本篇文章介绍两种解题思路及过程
1.先买再换
先用初始的n元去买n瓶汽水,这时也拥有了n个空瓶。n个空瓶再去换n/2瓶汽水,这时现有的空瓶数量为 n/2 + n%2 (n%2表示不够换一瓶的数量,可能为1或0),再用现有的空瓶去换汽水,直到空瓶数不够换一瓶汽水为止(小于2)。
1.1 代码逻辑:
放到编程中来讲:
① 首先创建变量n,读入初始金额n
②接着创建变量total用于记录可喝汽水数量,初始应该等于金额n
创建变量empty用于记录当前空瓶子数量,初始也应该等于金额n
③然后进入while循环,循环的条件是空瓶子数量>1,
循环内部,每一次循环完成——
空瓶子数量empty除2,等于本次换到的汽水数量,计入喝汽水总量
换汽水完成之后,本轮空瓶子数量= 空瓶子数量/2+空瓶子数量%2
当循环结束之后,得到的total就是可以喝的汽水总数
1.2 完整代码
//喝汽水问题
//方法一
#include<stdio.h>int main()
{int money = 0;scanf("%d", &money);//输入可用金额int total = money;//初始可喝汽水数量int empty = money;//初始空瓶子数量while (empty > 1){total = total + empty / 2;empty = empty / 2 + empty % 2;}printf("可以喝%d瓶\n", total);return 0;
}
1.3 运行结果

1.4 根据方法一总结优化
如果将程序多运行几次




观察结果,我们就会发现,初始金额n与可喝汽水数量total之间存在着一定规律
n=5,total=9
n=6,total=11
n=7,total=13
n=8,total=15
没错,total=2*n-1
如果在1元买一瓶,两空瓶换一瓶的基础条件下,可以根据上述规律将代码修改
int main()
{int money = 0;scanf("%d", &money);int total = 0;if (money > 0)total = 2 * money - 1;printf("可以喝%d瓶\n", total);return 0;
}
2.边买边换
第二种解题思路是:
得到初始的金钱n后,优先用空瓶子去换汽水,当空瓶子不够时,再花钱买一瓶。重复上面的过程,直到没钱,以及空瓶子小于2
2.1 代码逻辑:
放到编程中来讲:
① 首先创建变量n,读入初始金额n
②接着创建变量total用于记录可喝汽水数量,初始等于0
创建变量empty用于记录当前空瓶子数量,初始等于0
③然后进入while循环,循环的条件是金钱>0,或者空瓶>=2
循环内部,每一次循环完成判断——
先判断如果空瓶子>=2,可喝汽水数量+1,空瓶子-2
如果空瓶子不够换,可喝汽水数量+1,金钱-1
当循环结束之后,得到的total就是可以喝的汽水总数
2.2 完整代码
//方法二
#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);int total = 0;int empty = 0;while ((money > 0)||(empty>=2)){if (empty >= 2)//有空瓶时用瓶换{total++;empty-=2;}else //没空瓶时用钱买{total++;money--;}empty++; //得到一瓶时空瓶+1}printf("可以喝%d瓶\n", total);return 0;
}
2.3 运行结果
使用方法二和方法一的效果相同


创作不易,还望点赞支持。如有错误,还望提醒更正。
相关文章:
【C语言刷题系列】喝汽水问题
文章目录 一、文章简介 1.先买再换 1.1 代码逻辑: 1.2 完整代码 1.3 运行结果 1.4 根据方法一总结优化 2.边买边换 2.1 代码逻辑: 2.2 完整代码 2.3 运行结果 一、文章简介 本文所述专栏——C语言经典编程问题 C语言刷题_倔强的石头106的博客…...
[C++] C++ 11的functional模块介绍和使用案例
functional模块介绍 functional模块是C 11提供了一组函数对象和算法,用于增强C的函数式编程能力。该模块中的函数对象和算法可以大大简化代码,并提供了一些有用的工具,例如函数适配器和函数对象的组合。 functional模块中的函数对象包括&am…...
kubernetes基本概念和操作
基本概念和操作 1.Namespace1.1概述1.2应用示例 2.Pod2.1概述2.2语法及应用示例 3.Label3.1概述3.2语法及应用示例 4.Deployment4.1概述4.2语法及应用示例 5.Service5.1概述5.2语法及应用示例5.2.1创建集群内部可访问的Service5.2.2创建集群外部可访问的Service5.2.3删除服务5.…...
20240128周报-网络太杂,Tomcat太难
今天来做个小总结吧,之前说想用几个月的时间将Java生态给整理一遍,该工作已经进入第三周了。先和各位老老板汇报一下上一周的工作,然后说一下本周的计划和后面的计划。 1.上周工作 上周的计划是将网络和Tomcat的内容梳理一番,但…...
DES加密原理
DES加密算法综合运用了置换、代替、代数等多种密码技术,具有设计精 巧、实现容易、使用方便等特点。DES加密算法的明文、密文和密钥的分组长度 都是64位,详细的DES加密算法结构如图6-10所示。 图6-10 DES加密算法结构图 DES加密过程如下所示ÿ…...
react 之 useCallback
简单讲述下useCallback的使用方法,useCallback也是用来缓存的,只不过是用于做函数缓存 // useCallbackimport { memo, useCallback, useState } from "react"const Input memo(function Input ({ onChange }) {console.log(子组件重新渲染了…...
OfficeWeb365 Readfile 任意文件读取漏洞复现
0x01 产品简介 OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 0x02 漏洞概述 OfficeWeb365 Rea…...
UnityShader(十三)Unity内置的函数
在计算光照模型时我们需要得到许多数据,比如光源方向、视角方向这种基本信息。 在之前的例子中都是自行在代码里计算的,比如: normalize(_WorldSpaceLight0Pos.xyz) 得到光源方向(这种方法实际只适用平行光) normaliz…...
【开源】基于Qt5的ROS1/ROS2人机交互软件(支持地图编辑/多点导航)
本项目基于Qt5开发,基于CMake进行构建,可以实现一套代码同时在ROS1/ROS2系统中使用(本项目已接入CI,保证多ROS版本/系统版本可用性) 项目地址: https://github.com/chengyangkj/Ros_Qt5_Gui_App 软件在编译时会自动识别环境变量中的ROS1/ROS…...
Spring和SpringBoot的区别是什么
Spring 和 Spring Boot 是 Java 开发领域内两个极其重要且紧密相关的框架,它们各自在企业级应用开发中扮演着不同的角色,并带来了一系列革新性的变化。以下是关于两者之间主要区别的详细分析: 一、设计理念与定位 Spring Framework Spring 是…...
布局技巧及CSS初始化
一,margin负值巧妙应用 二,文字围绕浮动元素 三,行内块 四,CSS三角强化 五,CSS初始化 一,margin负值巧妙应用 制作盒子的细线边框: 鼠标经过li后变色: 二,文字围绕…...
excel怎么设置密码?轻松保护您的工作表
在数字化时代,数据的安全性显得尤为重要。excel作为我们日常工作中广泛使用的办公软件,其中可能包含了大量的敏感数据。为了确保这些数据不被未授权的人访问,本文将为您详细介绍excel怎么设置密码,从而有效地保护您的数据安全。 方…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TimePicker组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TimePicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TimePicker组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不…...
Springboot集成Camunda并完成一条流程实例
💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖设计流程定…...
宠物用品/宠物自动饮水机方案
宠物自动饮水机方案原理 宠物自动饮水机,也叫做智能宠物饮水机,是一种为宠物设计的智能化饮水器。应用核心主要在于智能化水泵控制,以及外围传感器电路。 宠物自动饮水机使用方便,不用频繁的换水。另外,自来水的水质可…...
git小白进阶之路
git是最常用的版本控制工具,我对其进行了整理后续补充,这个文档欢迎大家来讨论,当前我的视频梳理: git小白进阶之路_哔哩哔哩_bilibili,非常希望大佬们能够批评指正,并多多交流。 目录 初始配置 配置账号…...
哈希表——C++
目录 一、首先使用拉链法: 二、开放寻址法 三、字符串哈希 1.具体如何使用进制的方式来存储字符前缀的可以看这个y总的这个图 2.接下来说一说算某个中间的区间的字符串哈希值 哈希表是一种数组之间互相映射的数据结构,比如举个简单的例子一个十个的数…...
LabVIEW叶片厚度远程监控
LabVIEW叶片厚度远程监控 随着网络技术的高速发展,远程监控广泛应用在各个领域。本文介绍了一种基于LabVIEW的植物叶片厚度远程监控系统,旨在实现对植物生长状况的精准监测和分析。 该系统利用LabVIEW软件开发工具,通过TCP网络协议实现数据…...
el-table动态合并
废话就不多说了,直接上代码!!! 合并行 // 方法一 <template><div class"container"><el-table :data"dataSource" :border"true":header-cell-style"{ font-weight: normal,…...
【DevOps】产品需求文档(PRD)与常见原型软件
文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…...
Windows系统直接运行Android应用:APK Installer全指南
Windows系统直接运行Android应用:APK Installer全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾因Android模拟器启动缓慢、占用资源过多而放…...
Spring AI 快速入门教程:基于VUE3与Spring AI技术实现的“流式聊天““打字机效果“功能
目录 前言 一、Spring AI 核心认知 1.1 技术定位与核心价值 1.2 版本支持与生态兼容性 1.3 与其他 AI 集成框架对比 二、效果展示 三、快速入门 3.1 环境准备 JDK 配置 AI 服务密钥准备 3.2 后端项目创建 主要技术栈 pom.xml 配置 application.yml 配置 Java 主…...
Super Qwen Voice World多说话人合成展示:会议场景模拟应用
Super Qwen Voice World多说话人合成展示:会议场景模拟应用 1. 引言 想象一下,你正在准备一场重要的线上会议演示,需要模拟不同角色的发言和互动。传统方式可能需要找多个配音演员,花费大量时间和成本。但现在,通过S…...
Qwen3-ForcedAligner-0.6B多语言支持实测:52种语言自动检测与对齐能力
Qwen3-ForcedAligner-0.6B多语言支持实测:52种语言自动检测与对齐能力 1. 引言:音文对齐的实用价值 你有没有遇到过这样的场景:手里有一段音频和对应的文字稿,需要精确知道每个词在音频中的具体时间位置?传统方法需要…...
8大AI核心概念,让你秒懂智能体、多智能体系统、RAG、工作流、微调、函数调用、MCP和A2A!
本文介绍了8个AI核心概念,包括智能体(Agent)和多智能体系统(Multi-Agent System),以及如何通过RAG(Retrieval-Augmented Generation)、工作流(Work Flow)、微…...
PCB设计新手必看:从布局到EMC的10个实用避坑技巧
PCB设计新手必看:从布局到EMC的10个实用避坑技巧 刚接触PCB设计时,总会在各种细节上栽跟头。记得我第一次画板子时,晶振离MCU太远导致时钟信号不稳定,调试了整整两天才找到问题。这种经历让我深刻意识到,PCB设计不仅是…...
2026年阿里国际站数字人直播服务商评测
2026 阿里国际站数字人直播服务商选型参考:基于五大维度的评测分析 开篇 随着跨境电商行业的竞争加剧,阿里国际站商家对高效获客工具的需求日益迫切,AI 数字人直播凭借 24 小时不间断开播、降本增效的核心优势,已经成为跨境商家突破时区限制、提升询盘转化的核心抓手。 …...
产教融合共建失智老年人照护实训室实践路径
本文围绕产教融合模式,结合失智老年人照护岗位实际需求,从合作机制、空间布局、设备配置、教学实施、运营保障五个核心维度,给出可落地的失智老年人照护实训室共建实践路径,兼顾实用性与可操作性,助力院校与企业高效共…...
2026届必备的十大AI科研网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 伴随人工智能技术的迅猛发展,AI论文工具已然成为学术写作范畴的关键辅助方式&…...
UNet人脸融合作品集:这些换脸效果太惊艳了!
UNet人脸融合作品集:这些换脸效果太惊艳了! 1. 前言:当AI遇见人脸融合 想象一下,你有一张喜欢的风景照,但照片里的人物表情不够完美;或者你想看看自己如果长着明星的五官会是什么样子。这些在过去需要专业…...
