五人每人说两句话,只有一句是真的,求出比赛名次。

题目:
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; for(a=1;a<=5;a++) //a,b,c,d,e的名次都有可能从1——5,所以这里有5个for循环。 { 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)+(e==4))== 1) &&(((c==1)+(d==2))== 1)&&(((d==3)+(c==5))== 1)&& (((e==4)+(a==1))== 1)) //a,b,c,d,e每个人说两句话,只有一句话是真,所以两句话相加 为1 {
if(((a+b+c+d+e)==15) && ((a*b*c*d*e)==120)) //1+2+3+4+5=15,1*2*3*4*5=120,给出 这样的条件是为了使结果有唯一性。 printf(" a是第%d名\n b是第%d名\n c是第%d名\n d是第%d名\n e是第%d名\n",a,b,c,d,e); } } } } } } system("pause"); return 0; }

运行结果:

猜你喜欢

转载自blog.csdn.net/qq_41420688/article/details/79914394