【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;
}
相关推荐
天天爱吃肉82184 分钟前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
im_AMBER4 分钟前
Leetcode 114 链表中的下一个更大节点 | 删除排序链表中的重复元素 II
算法·leetcode
凉、介8 分钟前
VMware 三种网络模式(桥接 / NAT / Host-Only)原理与实验解析
c语言·网络·笔记·操作系统·嵌入式·vmware
薛定谔的猫喵喵11 分钟前
基于PyQt5的视频答题竞赛系统设计与实现
开发语言·qt·音视频
岱宗夫up16 分钟前
Python 数据分析入门
开发语言·python·数据分析
xhbaitxl17 分钟前
算法学习day38-动态规划
学习·算法·动态规划
多恩Stone17 分钟前
【3D AICG 系列-6】OmniPart 训练流程梳理
人工智能·pytorch·算法·3d·aigc
wangjialelele18 分钟前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
码界筑梦坊18 分钟前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
历程里程碑19 分钟前
普通数组----轮转数组
java·数据结构·c++·算法·spring·leetcode·eclipse