今日成长

记录今天的成长

1.
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

2.
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说。
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
 int a = 0;
 int b = 0;
 int c = 0;
 int d = 0;
 int e = 0;
 for (a = 1; a <= 5;)
 {
  for (b = 1; b <= 5; b++)
  {
   for (c = 1; c <= 5; c++)
   {
    for (d = 1; d <= 5; d++)
    {
     for (e = 1; e <= 5; e++)
     {
      //下面说的是满足每个人只有半句真半句假的条件,此时abcde可以取得所有的情况
      if (((b == 1) + (a == 3)) &&
       ((b == 2) + (e == 4)) &&
       ((c == 1) + (d == 2)) &&
       ((c == 5) + (d == 3)) &&
       ((c == 4) + (a == 1) == 1))
      { 
     //下面这个代码是将tem用0赋初值;此时tem的二进制的所有位均为0,用一个1来和此时的tem或运算,都会
                     //使这个1所在的位变成1,而这个1的位置就是abcde的值,即a=3时这里1的位置就是从二进制地位的第三位
      //这样就使tem在abcde的值所对应的位置上变成了1,如果低位全是1,则可以证明abcde是连续的数
     //tem=0000000
     //          1
     //  0000001
       int tem = 0;
       int flag = 0;
       tem = tem | (1 << (a - 1));//(1 << (a - 1))意思是:将1(二进制)左移a-1位
       tem = tem | (1 << (b - 1));
       tem = tem | (1 << (c - 1));
       tem = tem | (1 << (d - 1));
       tem = tem | (1 << (e - 1));
       while (tem = 0)            //当tem=0时说明已经判断完了
       {
        if (tem % 2 == 0)      //判断tem里面是否有0,如果有则证明这个abcde不是连续的数,如果都是1
                            //则是连续的。因为a=1b=1 c=2 d=2d=3,时tem的低三位为111,通过%2来判断
        {                      //这位是1还是0,通过/2来求tem的所有位
         flag = 1;
         break;
        }
        tem = tem / 2;
       }
       if (flag == 0)
       {
        printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
       }
      }
     }
     
    }
   }
  }
 }
 return 0;
}
int main()
{
 int kill = 0;
 for (kill = 'a'; kill <= 'd'; kill++)
 {
  if ((kill != 'a') +   //三个真一个假加起来就是3
   (kill == 'c') +
   (kill == 'd') +
   (kill != 'd') == 3)
  {
   printf("凶手是%c",kill);
   getchar();
  }
 }
 return 0;

猜你喜欢

转载自blog.csdn.net/skinwhite/article/details/74783292