用c语言实习: 正确输出他们各自所戴帽子的颜色。 厅内有5个人,他们均戴着帽子,有白帽子和红帽子。 已知戴白帽子的说真话,戴红帽子的说假话,请从他们各自提供的线索辨别谁戴白帽子,谁戴红帽子。 甲:我看见一个戴白帽子的. 乙:我没有看见戴红帽子的 丙:我看见一个戴白帽子的,但不是甲 丁:我没有看见戴白帽子的 戊:我的帽子和丙一样 请在右侧编辑器Begin-End处补充代码,完成本关任务,要求程序输出结果按甲乙丙丁戊的顺序分别输出他们所戴帽子的颜色,输出格式为:甲戴X帽子 乙戴X帽子 丙戴X帽子 丁戴X帽子. 戊戴X帽子 其中X代表他们所戴帽子的具体颜色。*/
时间: 2024-03-31 15:35:22 浏览: 79
```c
#include <stdio.h>
int main() {
int a, b, c, d, e; // 五个人分别用1-5表示
for (a = 1; a <= 2; a++) {
for (b = 1; b <= 2; b++) {
for (c = 1; c <= 2; c++) {
for (d = 1; d <= 2; d++) {
for (e = 1; e <= 2; e++) {
if ((a == 1 && b == 2 && c == 1 && d == 2 && e == 2) || // 排除所有人戴红帽子的情况
(a == 2 && b == 1 && c == 2 && d == 2 && e == 1)) { // 排除所有人戴白帽子的情况
continue;
}
if ((a == 1 && c != 1 && e != 1) || // 甲所说的是戴白帽子的人,且不是丙和戊
(b == 2 && d != 2 && e != 2) || // 乙所说的是没有戴红帽子的人,且不是丁和戊
(c == 1 && a != 1 && e != 1) || // 丙所说的是戴白帽子的人,且不是甲和戊
(d == 2 && b != 2 && e != 2) || // 丁所说的是没有戴白帽子的人,且不是乙和戊
(e == c)) { // 戊所说的是和丙戴相同的帽子
continue;
}
// 输出结果
printf("甲戴%s帽子\n", a == 1 ? "白" : "红");
printf("乙戴%s帽子\n", b == 1 ? "白" : "红");
printf("丙戴%s帽子\n", c == 1 ? "白" : "红");
printf("丁戴%s帽子\n", d == 1 ? "白" : "红");
printf("戊戴%s帽子\n", e == 1 ? "白" : "红");
}
}
}
}
}
return 0;
}
```
阅读全文