C语言------一种思路解决实际问题

简介: C语言------一种思路解决实际问题

1.比赛名次问题

ABCDE参加比赛,那么每个人的名次都有5种可能,即1,2,3,4,5;

int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  int d = 0;
  int e = 0;
  for (a = 1; a <= 5; a++)
  {
    for (b = 1; b <= 5; b++)
    {
      for (c = 1; c <= 5; c++)
      {
        for (d = 1; d <= 5; d++)
        {
          for (e = 1; e <= 5; e++)
          {
            if ((b == 2) + (a == 3) == 1
              && (b == 2) + (e == 4) == 1
              && (c == 1) + (d == 2) == 1
              && (d == 3) && (c == 5) == 1
              && (e == 4) && (a == 1) == 1)
            {
              if (a * b * c * d * e == 120)
              {
                printf("a=%d b=%d c=%d d=%d e=%d", a, b, c, d, e);
              }
            }
          }
        }
      }
    }
  }
}

这道题目的主要思想就是使用判断语句,真就是1,假就是0,每位选手只有一个人说的是对的,就是2个判断条件的和是1,使用逻辑与运算符,使得每个人的话都是一半对;

如果这样结束,我们会发现会出现名次相同的情况,所以要使得他们分别对应12345个名次,就要满足名次的乘积是120;

其实我们不难发现,如果这道题目真的使用传统方法解决,很难办,但是当我们使用假就是0,真就是1的时候,就可以很快的得到位序。

2.找凶手问题

这道题目与上一道题的思想类似,但是凶手只有一个人,我们可以依次假设ABCD是凶手,然后根据供词进行判断,如果符合3个真话,1个假话,就可以知道谁是凶手;

如果我们依然使用假就是0,真就是1,那么他们的和是3时,就找到凶手;

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

如上图所示,利用循环找到凶手之后,使用break终止循环。

相关文章
|
5月前
|
算法 C语言
C语言------循环结构II
这篇文章是C语言循环结构II的实训教程,通过多个实例程序,教授如何综合运用选择结构和循环语句解决问题,体会算法在程序设计中的作用,并复习程序调试功能和技巧。
C语言------循环结构II
|
8月前
|
C语言
C语言------操作符的巧妙使用
C语言------操作符的巧妙使用
50 0
|
5月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
5月前
|
算法 C语言
C语言------循环结构
这篇文章是C语言循环结构I的实训教程,介绍了while、do-while和for循环的使用方法,循环程序设计中的常用算法,无条件控制语句在循环中的控制作用,以及循环嵌套的理解和执行过程,并通过多个实例代码演示了这些概念的应用。
|
5月前
|
C语言
C语言------函数
这篇文章是C语言中函数的实训,涵盖了函数的定义、调用、自定义函数编写以及递归调用方法,并通过多个示例代码演示了如何实现累加、阶乘、斐波那契数列、特殊数列求和等函数功能。
C语言------函数
|
7月前
|
C语言
C语言----猜数字游戏
C语言----猜数字游戏
|
7月前
|
C语言
|
7月前
|
C语言
|
8月前
|
存储 编译器 C语言
C语言进阶第十课 --------文件的操作-1
C语言进阶第十课 --------文件的操作
|
8月前
|
存储 C语言
C语言进阶第十课 --------文件的操作-2
C语言进阶第十课 --------文件的操作

热门文章

最新文章

下一篇
开通oss服务