1.
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
//A选手说:B第二,A第三;
//B选手说:B第二,E第四;
//C选手说:C第一,D第二;
//D选手说:C最后,D第三;
//E选手说:E第四,A第一;
//A 3 B 1 C 5 D 2 E 4
//利用for循环
for (int a = 1; a < 6; ++a){
for (int b = 1; b < 6; ++b){
for (int c = 1; c < 6; ++c){
for (int d = 1; d < 6; ++d){
for (int e = 1; e < 6; ++e){
if (((b == 2) + (a == 3) == 1) &&
((b == 2) + (e == 4) == 1) &&
((c == 1) + (d == 2) == 1) &&
((c == 5) + (d == 3) == 1) &&
((e == 4) + (a == 1) == 1) == 1 &&
//a、b、c、d、e各不相同
a*b*c*d*e == 120){
printf("A:%d\n", a);
printf("B:%d\n", b);
printf("C:%d\n", c);
printf("D:%d\n", d);
printf("E:%d\n", e);
}
}
}
}
}
}
system("pause");
return 0;
}
运行结果:
2.
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个
嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
代码:
#include <stdio.h>
#include <stdlib.h>
//A说:不是A
//B说:是C
//C说:是D
//D说:不是D
//3真,1假
//C是凶手
//假设凶手为1
int main(){
for (int a = 0; a < 2; ++a){
for (int b = 0; b < 2; ++b){
for (int c = 0; c < 2; ++c){
for (int d = 0; d < 2; ++d){
if ((a == 1) + (b == 1) + (c == 1) + (d == 1) == 1 //只有一人为凶手
&&(a==0)+(c==1)+(d==1)+(d==0)==3){
if (a == 1){
printf("凶手为:A\n");
}
else if (b == 1){
printf("凶手为:B\n");
}
else if (c == 1){
printf("凶手为:C\n");
}
else if (d == 1){
printf("凶手为:D\n");
}
}
}
}
}
}
system("pause");
return 0;
}
运行结果: