5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

通过编程解决一个趣味逻辑问题:根据5位跳水运动员的预测,确定最终的比赛名次。每位选手对比赛结果的预测都只说对了一半。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
//五层循环,代表abcde可能在的左右名次,当然有像abcde都是第一名等的错误排名方式
//下面用if语句进行筛选
    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++)    
                    {

                        //abcde五个人只说对了一半,所以他们说的话一真一假,所以加起来的值为1
                        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进行的第一次筛选的结果有重复,这时规定abcde五人的名次不能出现重复
                            //这里使用两层if语句,而不把所有条件放在一个if的条件中,可以减少内层if判断语句执行的次数,提高效率
                            if (((a != b) && (a != c) && (a != d) && (a != e))
                                && ((b != c) && (b != d) && (b != e))
                                && ((c != d) && (c != e))
                                && ((d != e)))
                            {
                                printf("a: %d, b: %d, c: %d, d: %d, e: %d\n", a, b, c, d, e);
                            }
                        }
                    }
                }
            }
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值