选手的名次--循环

 

题目描述

5位选手参加100米决赛,教练员让5人据实力预测比赛结果。

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

决赛结果公布后,每位选手的预测都只说对了一半(即一对一错)。判断每位选手比赛实际名次与输入的猜测是否相同。

特别说明:不是电脑判断出解,直接输出结果不计分。

输入

测试数据组数

每组测试数据一行,随机的选手排名

输出

对每组测试数据,如果选手排名与决赛结果公布的选手排名一致,输出YES;否则输出NO

 

#include<stdio.h>
int main()
{ int t,A,B,C,D,E,A1,B1,C1,D1,E1,sqe,i;
    char ch;
    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++){
                        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 &&A*B*C*D*E==120)//这里要学习多个2选1的条件如何构造 同时不要忘了隐含条件的挖掘
                            goto out;//使用goto使代码更有观赏性
                    }}}}}
    out:
    scanf("%d",&t);
    for(i=0;i<t;i++) {
        sqe = 1;//第一个输出的就记为1
        while ((ch = getchar()) != '\n') {
            if (ch != ' ') {//第一次不小心用成了循环,其实要用选择。
                switch (ch) {

                    case'A':A1 = sqe;
                        break;
                    case'B':B1 = sqe;
                        break;
                    case'C':C1 = sqe;
                        break;
                    case'D':D1 = sqe;
                        break;
                    case'E':E1 = sqe;
                        break;


                }
                sqe++;
            }
        }
        if (A1 == A && B1 == B && C1 == C && D1 == D && E1 == E) {
            printf("YES\n");//采用的是整体的判别 而不是单个的从前往后的一个一个的判断
        } else {
            printf("NO\n");
        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Canan猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值