C语言实现猜名次代码

a9e8acb0366f4e77afca8e47dbd749d4.png

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循环来实现:

9c4f7853d4c345b68e760724e3729305.png

接下来我们就要考虑“每位选手都说对了一半”我们怎么来确认呢?

我们可以用比较运算符,因为比较运算符的结果要么是真,要么就是假,举个例子:

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

然后再把这些条件用&&套起来就好了:

8bbe3030b46a4c9c9ad2188703fa502c.png

所有的条件都罗列出来之后,如果我们直接去打印,就会得到很多重名的结果,我们还要去一个一个找哪个是真的,就像这样:

4b93d200d52149bbb9ac3be77dd1e232.png

所以我们还需要额外再加一个条件,如果他们的名次是1 2 3 4 5 的话,那他们的值乘起来应该等于120,所以我们可以这么写:

2a38ba52f81a497baead205074e17071.png

最后为大家附上完整的代码:

629d38268b2a415db01bef7823a23e1e.png

此次的分享就到此结束啦,希望能够对你有帮助哦! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值