5名运动员参加了10米跳水比赛,请你帮他们预测比赛结果。
A选手说:B第二,我第三;
B选手说:我第二,我第四;
C选手说:我第一,我第二;
D选手说:我最后,我第三;
E选手说:我第四,我第一;
比赛结束后,每位选手之说对了一半,请编程确定比赛的名次。
#include<stdio.h>
int main()
{
int a=0; //数字代表选手的名次 //
int b=0;
int c=0;
int d=0;
int e=0;
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++)
{ if(((b==2)+(a==3)==1 )&& /*b==2表示b选手名次位第二名这句话为真
因为 选手一半话为真,所以总共逻辑和为1*/
((b==2)+(e==4)==1 )&&
((c==1)+(d==2)==1 )&&
((c==5)+(d==3)==1 )&&
((e==4)+(a==1)==1 ))
if(a*b*c*d*e==120) //确保5位选手名次各不相同--1*2*3*4*5=120//
{printf("a=%d,b=%d,c=%d,d=%d,e=%d",a,b,c,d,e);
}
}
}
}
}
}
return 0;
}