鱼C论坛

 找回密码
 立即注册
查看: 2224|回复: 2

罪犯

[复制链接]
发表于 2023-11-7 11:05:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本发生命案,警察把嫌疑人确定在4人当中(a,b,c,d)

审讯结果:两个人说的真话,两个人说的假话

a: 罪犯在其他三个当中

B:人不是我杀的,是c杀的

c: a和d之间有一个是罪犯

d: b说的是事实

用C语言for写一个代码,判断谁是罪犯,并对代码详细解释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-7 11:07:10 | 显示全部楼层
问题:用 C 语言编写一个程序,判断谁是罪犯,并对代码详细解释。

你可以使用以下的 C 语言代码来解决这个问题:
  1. #include <stdio.h>
  2. int main() {
  3.     int a, b, c, d;
  4.    
  5.     for (a = 0; a <= 1; a++) {
  6.         for (b = 0; b <= 1; b++) {
  7.             for (c = 0; c <= 1; c++) {
  8.                 for (d = 0; d <= 1; d++) {
  9.                     if ((a + b + c + d) == 1 &&
  10.                         ((a && (b + c + d == 3)) ||
  11.                         (b && (a + c + d == 3)) ||
  12.                         (c && (a + d == 1)) ||
  13.                         (d && (b == 0)))) {
  14.                         printf("罪犯是:");
  15.                         if (a) {
  16.                             printf("A\n");
  17.                         } else if (b) {
  18.                             printf("B\n");
  19.                         } else if (c) {
  20.                             printf("C\n");
  21.                         } else {
  22.                             printf("D\n");
  23.                         }
  24.                     }
  25.                 }
  26.             }
  27.         }
  28.     }
  29.     return 0;
  30. }
复制代码

这段代码使用了四重循环来遍历所有可能的情况,然后根据审讯结果进行逻辑判断。在内层循环中,首先判断说真话的人数是否为 2 人,然后根据每个嫌疑人的说法进行逻辑判断,找出符合条件的情况。

- 首先,通过四重循环枚举 a、b、c、d 四个嫌疑人的说话情况。
- 然后判断说真话的人数是否为 2 人。
- 对于每种情况,根据审讯结果进行逻辑判断,找出符合条件的情况。
- 如果满足条件,即输出罪犯是谁。

这样的方法可以穷举所有可能的情况,然后根据审讯结果进行逻辑判断,找出符合条件的情况,以确定罪犯是谁。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-7 11:07:31 | 显示全部楼层
以下是用C语言for循环实现的代码:

  1. #include <stdio.h>

  2. int main() {
  3.     int i, j, count;
  4.     char suspect;
  5.     for(i = 0; i < 4; i++) {
  6.         count = 0;
  7.         for(j = 0; j < 4; j++) {
  8.             if(i == j) continue;
  9.             if((i == 0 && j == 1) || (i == 1 && j == 0) || (i == 2 && j == 3) || (i == 3 && j == 2)) {
  10.                 if(suspect == 'A' || suspect == 'C') count++;
  11.             } else if((i == 0 && j == 2) || (i == 2 && j == 0) || (i == 1 && j == 3) || (i == 3 && j == 1)) {
  12.                 if(suspect == 'B' || suspect == 'C') count++;
  13.             } else if((i == 0 && j == 3) || (i == 3 && j == 0) || (i == 1 && j == 2) || (i == 2 && j == 1)) {
  14.                 if(suspect == 'A' || suspect == 'D') count++;
  15.             }
  16.         }
  17.         if(count == 2) {
  18.             suspect = i + 'A';
  19.             break;
  20.         }
  21.     }
  22.     printf("The criminal is %c.\n", suspect);
  23.     return 0;
  24. }
复制代码


代码解释:

首先,我们使用两个for循环,分别遍历4个嫌疑人,判断每个嫌疑人所说的话是否符合题目中的条件。

对于每个嫌疑人,我们使用一个计数器count来记录他所说的话中符合条件的数量。如果count为2,那么这个嫌疑人就是罪犯。

在判断每个嫌疑人所说的话是否符合条件时,我们使用了一个if-else语句。每个if-else语句对应了题目中的一个条件。例如,if((i == 0 && j == 1) || (i == 1 && j == 0) || (i == 2 && j == 3) || (i == 3 && j == 2)) 就对应了题目中a所说的话。

在每个if-else语句中,我们使用了一个嵌套的if语句来判断当前嫌疑人是否符合条件。如果符合条件,就将计数器count加1。

最后,我们输出罪犯的编号即可。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表