【C语言】喝汽水问题

简介: C语言中的喝汽水问题

1. 题目内容

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

2. 思路分析

2.1 方法一

image.png

思路:

  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 方法一

#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;
}

image.png

3.2 方法二

#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;
}

image.png

3.3 方法三

#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;
}

image.png

相关文章
|
9月前
|
C语言
c语言经典例题讲解(输出菱形,喝汽水问题)
c语言经典例题讲解(输出菱形,喝汽水问题)
113 0
|
8月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
C语言
用C语言解决实际问题之买汽水、猜凶手(名次)
用C语言解决实际问题之买汽水、猜凶手(名次)
100 0
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
102 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
C语言
C语言:喝汽水问题
总体思路: (一). 定义相关变量: int money = 0; -- 一元一瓶,所以也等于空瓶数 int total = 0; -- 喝的总瓶数
149 0
|
C语言
C语言;喝汽水问题
C语言;喝汽水问题
110 0
C语言;喝汽水问题
|
1月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
62 23
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
66 15
|
1月前
|
C语言
【C语言程序设计——函数】亲密数判定(头歌实践教学平台习题)【合集】
本文介绍了通过编程实现打印3000以内的全部亲密数的任务。主要内容包括: 1. **任务描述**:实现函数打印3000以内的全部亲密数。 2. **相关知识**: - 循环控制和跳转语句(for、while循环,break、continue语句)的使用。 - 亲密数的概念及历史背景。 - 判断亲密数的方法:计算数A的因子和存于B,再计算B的因子和存于sum,最后比较sum与A是否相等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台对代码进行测试,预期输出如220和284是一组亲密数。 5. **通关代码**:提供了完整的C语言代码实现
60 24