五位跳水运动员 参加比赛 预测他们的比赛排名
A选手说: B第二,我第三
B选手说: 我第二,E第四
C选手说: 我第一,D第二
D选手说: C最后, 我第三
E选手说: 我第四,A第一
每位选手都说对一半,编程确定比赛名次 。
A: B=2,A=3
B: B=2,E=4
C: C=1,D=2
D: C=5,D=3
E: E=4, A=1
条件为真是1,条件为假是0。
对每位选手的话进行判断,当五位选手同时满足条件时打印出比赛名次.
根据名次是1到5 设定循环条件起始值为1,结束值为=5
5层for循环让abcde的值从1到5走一遍 然后每次都判断条件
就相当于把所有结果都列出来 根据条件 找出正确的结果
代码如下:
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
//名次从1到5 循环也从1开始 加到5之后停止
for (int a = 1; a <= 5; a++)
{
for (int b = 1; b <= 5; b++)
{
for (int c = 1; c <= 5; c++)
{
for (int d = 1; d <= 5; d++)
{
for (int e = 1; e <= 5; e++)
{
//若刚好满足五位选手的条件的值 就是所求的比赛排名
//A满足且B满足且C满足且D满足且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)
)
{
//由于满足的值 不止一种 而且很多重复的 再进行下一次筛选
if(a*b*c*d*e==120)//若满足abcde分别是第一名第二名...第五名在打印
printf("a是第%d名 b是第%d名 c是第%d名 d是第%d名 e是第%d名", a, b, c, d, e);
}
}
}
}
}
}
return 0;
}