用C语言解决实际问题之买汽水、猜凶手(名次)

简介: 用C语言解决实际问题之买汽水、猜凶手(名次)

前言

今天带给大家的是两道有趣的小游戏:买汽水和猜凶手

买汽水

此处介绍两种方法

答案1

直接利用循环,直到剩余的空瓶子个数小于2

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

答案2(优化版)

其实我们可以总结出一定的数学规律:

钱数和总瓶数存在

total = 2 * money - 1

这样的关系

int main()
{
  int money = 0;
  scanf("%d", &money);
  int total = 0;
  if (money > 0)
    total = 2 * money - 1;
  printf("%d\n", total);
  return 0;
  }

或者,我们从价值交换的角度去理解这道题,

20块钱,能换到40个空瓶,但最后到手的其实是39瓶,因为最后一瓶是换不到的,这种思路大家可以琢磨一下。

猜凶手

示例

这道题可以取巧的地方是:

字符a、b、c、d直接对应四个人,并且因为他们的ASCII码值是连续的,所以可以直接使用循环遍历a、b、c、d

int main()
{
  char killer = 0;
  for (killer = 'a'; killer <= 'd'; killer++)
  {
    if ((killer !='a') + (killer =='c') + (killer=='d') + (killer!='d') == 3)
    {
      printf("killer = %c\n", killer);
    }
  }
  return 0;
}

提示:

其实这种逻辑推理题,只要把最终结果所需满足的真假情况找出来即可,至于推理过程交给电脑即可。

同类题

给大家介绍一道同类题,大家可以练练手~

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

结语

这两道题不仅有趣,还需要一定的思考,怎么样,是不是感觉用代码解决日常生后中的问题很有趣啊😊,我们下期见!


相关文章
|
7月前
|
C语言
c语言经典例题讲解(输出菱形,喝汽水问题)
c语言经典例题讲解(输出菱形,喝汽水问题)
98 0
|
6月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
5月前
|
C语言
【C语言】喝汽水问题
C语言中的喝汽水问题
27 0
【C语言】喝汽水问题
|
7月前
|
C语言
C语言第四十七弹---猜凶手
C语言第四十七弹---猜凶手
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
88 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
存储 算法 C语言
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
82 0
|
C语言
【C语言练习】求名次、找凶手
【C语言练习】求名次、找凶手
82 0
|
C语言
C语言:猜凶手
题目: 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。
110 0
|
C语言
C语言:猜名次
题目: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三;