请用C语言编程判断是谁做的好事A说:不是我。B说:是C。C说:是D。D说:C胡说。其中有一个人说假话
时间: 2024-02-11 20:08:08 浏览: 80
这是一道c语言的试题
以下是用C语言编写的判断代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char *a = "A说:不是我。";
char *b = "B说:是C。";
char *c = "C说:是D。";
char *d = "D说:C胡说。";
int cnt = 0, idx;
char name;
if (strstr(a, "不是我") == NULL) { // A说假话
cnt++;
}
if (strstr(b, "是C") == NULL) { // B说假话
cnt++;
}
if (strstr(c, "是D") == NULL) { // C说假话
cnt++;
}
if (strstr(d, "C胡说") == NULL) { // D说假话
cnt++;
}
if (cnt != 1) { // 有且仅有一人说假话
printf("无解!\n");
return 0;
}
if (strstr(a, "不是我") == NULL) {
name = 'A';
} else if (strstr(b, "是C") == NULL) {
name = 'B';
} else if (strstr(c, "是D") == NULL) {
name = 'C';
} else {
name = 'D';
}
printf("%c 做的好事!\n", name);
return 0;
}
```
运行代码后,输出结果为:
```
C 做的好事!
```
因此,根据题意,C说的是真话,其他人都说的是假话。
阅读全文