/*
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
*/
#include<stdio.h>
#include<stdlib.h>
int main(){
int a, b, c, d, e;
//判断前,A,B,C.D,E的名次可取1,2,3,4,5中的任一名次
for (a = 1; a <= 5; ++a){
for (b = 1; b <= 5; ++b){
for (c = 1; c <= 5; ++c){
for (d = 1; d <= 5; ++d){
for (e = 1; e <= 5; ++e){
//A选手说:B第二,我第三;有一半是真的
if (((b == 2) && (c != 3))
+ ((b != 2) && (c == 3)) == 1){
//B选手说:我第二,E第四;有一半是真的
if (((b == 2) && (e != 4))
+ ((b != 2) && (e == 4)) == 1){
//C选手说:我第一,D第二;有一半是真的
if (((c == 1) && (d != 2))
+ ((c != 1) && (d == 2)) == 1){
// D选手说:C最后,我第三;有一半是真的
if (((c == 5) && (d == 3))
+ ((c != 5) && (d != 3)) == 1){
// E选手说:我第四,A第一;有一半是真的
if (((e == 4) && (a != 1))
+ ((e != 4) && (a == 1)) == 1){
//判断A,B,C,D,E的名次是否是1到5中的数,且不存在相同名次
if (a * b * c * d * e == 120){
//打印A,B,C,D,E的名次
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);
//判断出名次后跳出循环
break;
}
}
}
}
}
}
}
}
}
}
}
system("pause");
return 0;
}