【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! 🤣

相关文章
|
4天前
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
15 1
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
|
10月前
喝汽水问题
喝汽水问题
46 0
|
10月前
|
C语言
C语言:喝汽水问题
总体思路: (一). 定义相关变量: int money = 0; -- 一元一瓶,所以也等于空瓶数 int total = 0; -- 喝的总瓶数
105 0
|
C语言
【C】喝汽水,找单身狗问题
【C】喝汽水,找单身狗问题
79 0
|
C语言
C语言;喝汽水问题
C语言;喝汽水问题
79 0
C语言;喝汽水问题
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
66 0
犬心犬意 - 狗为什么会趴在地板上睡觉,不怕着凉吗?活久见
|
Windows
我要喝汽水
我要喝汽水
86 0
我要喝汽水
|
弹性计算 云计算
|
开发者 人工智能 云栖大会
除了吃月饼,中秋节还能干啥?
明天 八月十五,团圆夜,花好月圆之际,除了吃月饼,还能干啥?阿里妹带来双重好礼,陪你过中秋~
7389 0
|
C语言 C++
小伙子用C语言写出绽放的玫瑰花,成功表白C++代码女神!
小伙子用C语言写出绽放的玫瑰花,成功表白C++代码女神!
5064 0