5位运动员参加了10米跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三
B选手说:我第二,E第四
C选手说:我第一,D第二
D选手说:C最后,我第三
E选手说:我第四,A第一
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
相信很多同学第一次碰到这种题头都晕了,别问我为什么知道,因为我也晕了。
做这种题就需要我们去锻炼自己的编程思维,第一次见到不会很正常,当我们了解了它的底层逻辑之后,就直接拿下了。
那首先我们要考虑这么一个问题,他们这几个人的名次可能是什么:
A的名次无非就是:1 2 3 4 5
B的名次无非就是:1 2 3 4 5
C的名次无非就是:1 2 3 4 5
D的名次无非就是:1 2 3 4 5
E的名次无非就是:1 2 3 4 5
他们的名次无非就是五个中的其中一个。这个逻辑我们可以用for循环来实现:
接下来我们就要考虑“每位选手都说对了一半”我们怎么来确认呢?
我们可以用比较运算符,因为比较运算符的结果要么是真,要么就是假,举个例子:
A选手说:B第二,我第三
B如果真的是第二,那 b==2 这个表达式就是真,为真它的结果就是1,如果为假就是0
A如果真的是第三,那 a==3 这个表达式就是真,为真它的结果就是1,如果为假那就是0
如果他们都说对了一半,无论是谁真谁假,这两个表达式的结果加起来一定是1。
(b==2)+(a==3)==1
按照这个逻辑,我们就可以得到:
( b==2 ) + ( e==4 )==1
( c==1 ) + ( d==2 )==1
( c==5 ) + ( d==3 )==1
( a==1 ) + ( e==4 )==1
然后再把这些条件用&&套起来就好了:
所有的条件都罗列出来之后,如果我们直接去打印,就会得到很多重名的结果,我们还要去一个一个找哪个是真的,就像这样:
所以我们还需要额外再加一个条件,如果他们的名次是1 2 3 4 5 的话,那他们的值乘起来应该等于120,所以我们可以这么写:
最后为大家附上完整的代码:
此次的分享就到此结束啦,希望能够对你有帮助哦!