c语言编程其中有一位是真正做了好事的学生。询问4位同学时,他们的回 答如下: A说:不是我 ,B :是C, C说:是D, D说:C胡说 ,请编程判断是谁做的好事
时间: 2024-02-11 08:08:05 浏览: 113
根据题目的描述,我们可以得到以下条件:
- 只有一个人做了好事;
- A说不是他;
- B说是C;
- C说是D;
- D说C胡说。
根据第2个条件,如果C做了好事,那么B的话就是真的,而C和D的话就是假的。所以如果C做了好事,那么B、C、D都在撒谎,这与只有一个人做了好事的条件矛盾,因此排除C。
根据第3个条件,如果D做了好事,那么C的话就是真的,而B和D的话就是假的。所以如果D做了好事,那么B在说谎,C和D在说真话,这与只有一个人做了好事的条件相符合,因此D是做了好事的人。
因此,D是做了好事的人。下面是一段C语言程序的实现:
```c
#include <stdio.h>
int main() {
int a = 0, b = 0, c = 0, d = 0;
// 遍历所有可能性
for (a = 0; a <= 1; a++) {
for (b = 0; b <= 1; b++) {
for (c = 0; c <= 1; c++) {
for (d = 0; d <= 1; d++) {
// 满足所有条件
if ((a + b + c + d == 1) && (a == 0) && (b == 1) && (c == 0) && (d == 1)) {
printf("D is the one who did the good thing.\n");
return 0;
}
}
}
}
}
printf("No one did the good thing.\n");
return 0;
}
```
程序输出结果为:
```
D is the one who did the good thing.
```
阅读全文