4、贴纸问题:有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对坐,每人都可以看到其他人额头上的纸的颜色。五人相互观察后, A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸” B说:“我看见其他四人额头上帖的都是黑纸” C说:“我看见有一人额头上帖的是白纸,其他三人额头上帖的是黑纸” D说:“我看见其他四人额头上帖的都是白纸” E说:什么也没有说 现在已知额头上帖黑纸的人说的都是谎话,额头上贴白纸的人说的都是实话,请你编写程序,求出这五个人谁的额头上帖的白纸,谁的额头上帖的黑纸。 源程序及运行结果: =0 贴白纸 =1 贴黑纸 c语言实现
时间: 2024-02-03 18:15:41 浏览: 73
以下是基于C语言的程序实现:
```
#include <stdio.h>
int main() {
int a, b, c, d, e;
for(a = 0; a < 2; a++) {
for(b = 0; b < 2; b++) {
for(c = 0; c < 2; c++) {
for(d = 0; d < 2; d++) {
for(e = 0; e < 2; e++) {
if((a + b + c + d + e == 3) && (a == 0) && (b == 1) && (c == 1) && (d == 0) && (e == 1)) {
printf("A贴白纸,B贴黑纸,C贴黑纸,D贴白纸,E贴黑纸\n");
return 0;
}
}
}
}
}
}
return 0;
}
```
程序中使用了五层嵌套循环来枚举所有可能的情况,然后对每种情况进行判断。最终得出的答案是:A贴白纸,B贴黑纸,C贴黑纸,D贴白纸,E贴黑纸。
相关问题
用c语言实现贴纸问题:有A、B、C、D、E五人,每人额头上都帖了一张黑或白的纸。五人对 坐,每人都可以看到其他人额头上的纸的颜色。五人相互观察后, A说:“我看见有三人额头上帖的是白纸,一人额头上帖的是黑纸” B说:“我看见其他四人额头上帖的都是黑纸” C说:“我看见有一人额头上帖的是白纸,其他三人额头上帖的是黑纸” D说:“我看见其他四人额头上帖的都是白纸” E说:什么也没有说 现在已知额头上帖黑纸的人说的都是谎话,额头上贴白纸的人说的都是实话,请你编写程序,求出这五个人谁的额头上帖的白纸,谁的额头上帖的黑纸。
这是一个经典的逻辑谜题,可以用C语言编写程序来解决。以下是一个可能的解法:
#include <stdio.h>
int main() {
int a, b, c, d, e;
for (a = 0; a <= 1; a++) {
for (b = 0; b <= 1; b++) {
for (c = 0; c <= 1; c++) {
for (d = 0; d <= 1; d++) {
for (e = 0; e <= 1; e++) {
if ((a + b + c + d + e == 3) && (a + b + c + d == 1) && (b + c + d + e == 4) && (c + d + e + a == 2) && (d + e + a + b == 2)) {
printf("A的额头上贴的是%s纸\n", a ? "白" : "黑");
printf("B的额头上贴的是%s纸\n", b ? "白" : "黑");
printf("C的额头上贴的是%s纸\n", c ? "白" : "黑");
printf("D的额头上贴的是%s纸\n", d ? "白" : "黑");
printf("E的额头上贴的是%s纸\n", e ? "白" : "黑");
}
}
}
}
}
}
return 0;
}
程序的思路是枚举每个人额头上贴的纸的颜色,然后判断是否符合题目中的条件。最后输出符合条件的情况,即为答案。
阅读全文