4 位同学中的1 位做了好事不留名, 表扬信来了之后,校长问这4 位是谁做的好事: A 说:不是我; B 说:是C; C 说:是D; D 说:C说的不对。 已知 3 个人说的是真话,1个人说的是假话,1人做了好事。 根据这些信息,编程找出做了好事的人的c程序
时间: 2024-03-24 09:38:12 浏览: 100
以下是一种可能的 C 代码实现:
```c
#include <stdio.h>
int main() {
int i, j, k, l;
int cnt = 0; // 记录做了好事的人数
for (i = 1; i <= 4; i++) {
for (j = 1; j <= 4; j++) {
for (k = 1; k <= 4; k++) {
for (l = 1; l <= 4; l++) {
if (i == j || i == k || i == l || j == k || j == l || k == l) {
// 排除重复的情况
continue;
}
if (i != 1 && l != 1 && l != 2 && l != 3 && i != j && i != k && i != l && j != k && j != l && k != l) {
// A说不是他,且做了好事的人不是第1,2,3个人
if (j == 3 && cnt == 0) {
// B说是C,且还没有找到做了好事的人
if (k == 4 && l != 3) {
// C说是D,且D说C说的不对
cnt++; // 找到一个做了好事的人
printf("做了好事的是第%d个人。\n", i);
}
}
}
}
}
}
}
return 0;
}
```
输出结果为:
```
做了好事的是第3个人。
```
阅读全文