5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A

题目:

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

题目分析:

首先定义5个变量来对应5个运动员。通过循环来完成每个运动员有可能的所有名次;而且每个人所说的话只有一句是对的,不能两句同时正确,所以用 或 来完成这项操作,而每一句话中间所涉及的变量由 与 来完成。最后每个运动员的名次不能重复,所以再加上一条判断语句,逻辑还是比较清晰的,一条条分析之后可得到这些信息,接下来就是代码完成。

代码如下;

#include <stdio.h>

#include <stdlib.h>

int main(){
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    for (a = 1; a < 6; a++){
        for (b = 1; b < 6; b++){
            for (c = 1; c < 6; c++){
                for (d = 1; d < 6; d++){
                    for (e = 1; e < 6; e++){
                        if (((((((b != 2) && (a == 3)) == 1) || (((b == 2) && (a != 3)) == 1)) == 1) &&  //判断每个人所说的两句话中只能有一句话是正确的
                            (((((b != 2) && (e == 4)) == 1) || (((b == 2) && (e != 4)) == 1)) == 1) &&
                            (((((c != 1) && (d == 2)) == 1) || (((c == 1) && (d != 2)) == 1)) == 1) &&
                            (((((c != 5) && (d == 3)) == 1) || (((c == 5) && (d != 3)) == 1)) == 1) &&
                            (((((e != 4) && (a == 1)) == 1) || (((e == 4) && (a != 1)) == 1)) == 1)
                            ) == 1){    
                            if (((a != b) && (a != c) && (a != d) && (a != e)
                                 && (b != c) && (b != d) && (b != e)  
                                 && (c != d) && (c != e) 
                                 && (d != e)) == 1){  //每个人的名次不能重复
                                printf("a = %d,b = %d,c = %d,d = %d,e = %d \n", a, b, c, d, e);
                            }
                        }
                            
                    }
                }
            }
        }
    }

    system("pause");
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值