【C语言】一道有趣的喝汽水问题(会不会喝?喝不喝?)

简介: 【C语言】一道有趣的喝汽水问题(会不会喝?喝不喝?)

📄题目描述

题目名称:

喝汽水问题

题目内容:

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?

✅解题思路

image.png

数一下我们总共喝了39瓶

image.png

这下思路就很清晰了!

📄代码详解

代码示例:

int main()
{
  int money = 0;//钱
  int total = 0;//总共喝了多少瓶
  int empty = 0;//空瓶子的数量
  scanf("%d", &money);//20元
  total += money;//第一次喝了20瓶
  empty += money;//20个空瓶
  while (empty >= 2) //空瓶数>=2的话,还可以兑换
  {
    total += empty / 2;
    empty = empty / 2 + empty % 2;
  }
  printf("%d\n", total);
  return 0;
}

运行结果:

image.png

再来一次

image.png

继续、

image.png

不知道大家发现规律了没有?

10元钱可以喝19瓶

20元钱可以喝39瓶

30元钱可以喝59瓶

假设我们有n元钱呢?

那么就可以喝:n * 2 - 1

所以我们这个代码还可以继续优化:

int main()
{
  int money = 0;//钱
  int total = 0;//总共喝了多少瓶
  int empty = 0;//空瓶子的数量
  scanf("%d", &money);//20元
  if (money == 0) {
    total = 0;
  }
  else {
    total = money * 2 - 1;
  }
  printf("%d\n", total);
  return 0;
}

运行结果:

image.png

🌝小知识:


其实我们看上面的解题思路图,可知:

当你用20元买了20瓶汽水以后,那么一共可以喝39瓶,还剩下1个空瓶,对不对!

那么骚操作来了:你可以 向商店老板再借一个空瓶 ;

于是你对老板说:老板呀!再借我1个空瓶,我等会儿还给你!

这时候,老板借给你了1个空瓶,然后加上之前剩下的一个空瓶,那么你就可以再兑换一瓶汽水!

喝完这瓶汽水,你再把剩下的这个空瓶还给老板,刚好一个瓶子也不剩,

是不是很nice! 🤣

相关文章
|
2月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
9月前
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
66 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
6天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
6天前
|
C语言 C++
|
15天前
|
机器学习/深度学习 C语言
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
【8月更文挑战第5天】本篇文章用C语言采用多文件编写实现了一个基础的扫雷游戏(附源码),并讲解了关于函数递归的基础概念及其相对应的习题练习(附源码)
29 1
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
|
17天前
|
存储 编译器 程序员
八:《初学C语言》— 函数的基本概念
【8月更文挑战第3天】本篇文章详细讲解了库函数与自定义函数的区别、函数的嵌套调用及链式访问、函数的声明和定义、static和extern等基础知识
17 1
八:《初学C语言》— 函数的基本概念
|
3天前
|
测试技术 C语言
C语言中的void函数
C语言中的void函数
|
3天前
|
存储 安全 编译器
C语言中的scanf函数
C语言中的scanf函数
|
3天前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
|
3天前
|
C语言
C语言中的无参函数
C语言中的无参函数