【C语言】喝汽水问题

大家好!今天我们来学习C语言中的喝汽水问题!

目录

[1. 题目内容:](#1. 题目内容:)

[2. 思路分析](#2. 思路分析)

[2.1 方法一](#2.1 方法一)

[2.2 方法二](#2.2 方法二)

[2.3 方法三](#2.3 方法三)

[3. 代码实现](#3. 代码实现)

[3.1 方法一](#3.1 方法一)

[3.2 方法二](#3.2 方法二)

[3.3 方法三](#3.3 方法三)


1. 题目内容

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水?(编程实现)。

2. 思路分析

2.1 方法一

思路:

  1. 20元首先可以喝20瓶,此时手中有20个空瓶子。

  2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余empty/2两个空瓶子换的喝完后产生的瓶子) + empty%2不够换的瓶子 )。

  3. 如果瓶子个数超过1个,可以继续换,即重复2

2.2 方法二

按照上述喝水和用瓶子换的规则的话,可以发现,其实就是个等差数列:money*2-1

2.3 方法三

因为每两个空瓶可以换一瓶汽水,1瓶汽水1元,最开始给20元。

我们就用钱数money设置一个while循环,当钱数money不等于0时,每买一瓶汽水,就让能喝的汽水total+1,同时money-1。

因为两个空瓶可以换一瓶汽水,所以当total为偶数时,total就再+1即可。

3. 代码实现

3.1 方法一

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	int total = 0;
	int empty = 0;
	int money = 0;
	scanf("%d", &money);
	total += money;
	empty += money ;
	while (empty >= 2)
	{
		total += empty / 2;
		empty = empty/2 + empty % 2;
	}
	printf("可以喝%d瓶汽水\n", total);
	return 0;
}

3.2 方法二

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	int total = 0;
	int empty = 0;
	int money = 0;
	scanf("%d", &money);
	if (money > 0)
		total = money * 2 - 1;
	printf("可以喝%d瓶汽水\n", total);
	return 0;
}

3.3 方法三

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
	int total = 0;
	int money = 0;
	scanf("%d", &money);
	while (money != 0)
	{
		total++;
		money--;
		if (total % 2 == 0)
			total++;
	}
	printf("可以喝%d瓶汽水\n", total);
	return 0;
}
相关推荐
半桔1 分钟前
【设计模式】策略模式:可插拔算法,从硬编码到灵活适配,体会“算法解耦“思想
java·c++·算法·设计模式·策略模式
沐知全栈开发4 分钟前
JavaScript 计时事件
开发语言
Yang-Never5 分钟前
Android 应用启动 -> Android 多种方式启动同一进程,Application.onCreate() 会多次执行吗?
android·java·开发语言·kotlin·android studio
期待のcode6 分钟前
Java 共享变量的内存可见性问题
java·开发语言
sali-tec6 分钟前
C# 基于OpenCv的视觉工作流-章18-图像缩放
图像处理·人工智能·opencv·算法·计算机视觉
会游泳的石头6 分钟前
深入剖析 Java 长连接:SSE 与 WebSocket 的实战陷阱与优化策略
java·开发语言·websocket
yutian06067 分钟前
TI-C2000 系列 TMS320F2837X 控制律加速器(CLA)应用
开发语言·ti·ti c2000
夕阳之后的黑夜15 分钟前
Python脚本:为PDF批量添加水印
开发语言·python·pdf
2401_8414956418 分钟前
【LeetCode刷题】LRU缓存
数据结构·python·算法·leetcode·缓存·lru缓存·查找
女王大人万岁18 分钟前
Go标准库 path 详解
服务器·开发语言·后端·golang