C语言复习---比赛问题

一:比赛问题

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main()
{
    char a, b, c;    //我方a,b,c三人

    for (a = 'x'; a <= 'z'; a++)    //选手a的可选对手
        for (b = 'x'; b <= 'z';b++)    //选手b的可选对手
        {
            if (b!=a)    //两个选手的对手不能一样
            {
                for (c = 'x'; c <= 'z';c++)    //选手c的可选对手
                {
                    if (c!=a&&c!=b)    //对手不能和ab选手的对手一样
                    {
                        //开始对条件进行筛选,按照题意进行筛选
                        if (a != 'x'&&c != 'z'&&c != 'x')
                            printf("a vs %c\nb vs %c\nc vs %c\n", a, b, c);
                    }
                }
            }
        }
    system("pause");
    return 0;
}
除了最后的if语句是用于判断题意中的:a说他不和x比,c说他不和x,z比
上面的for和if会将所有可能的对手赋给选手,只是保证了三个选手的对手不一致,我们只需要在最后进行整体筛选即可

二:颜色组合问题

口袋中有红、黄、蓝、白、黑五种颜色的球若干,每次从口袋中取出3个球。问得到三种不同颜色的球可以选取的方法,打印出三种颜色的各种组合
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

enum Color
{
    red,yellow,blue,white,black
};

int main()
{
    enum Color i, j, k, cur;
    int n, loop;
    for (i = red; i <= black;i++)
    {
        for (j = red; j <= black;j++)
        {
            if (j!=i)
            {
                for (k = red; k <= black;k++)
                {
                    if (k!=i&&k!=j)
                    {
                        //找到所有的不同颜色组合
                        //循环3次,取出所有颜色
                        for (loop = 1; loop <= 3;loop++)
                        {
                            //每次获取一个颜色
                            switch (loop)
                            {
                            case 1:
                                cur = i;
                                break;
                            case  2:
                                cur = j;
                                break;
                            case 3:
                                cur = k;
                                break;
                            }

                            //将对应颜色打印出来
                            switch (cur)
                            {
                            case red:
                                printf("%-10s", "red");
                                break;
                            case yellow:
                                printf("%-10s", "yellow");
                                break;
                            case blue:
                                printf("%-10s", "blue");
                                break;
                            case white:
                                printf("%-10s", "white");
                                break;
                            case black:
                                printf("%-10s", "black");
                                break;
                            default:
                                break;
                            }
                        }
                        printf("\n");
                    }
                }
            }
        }
    }


    system("pause");
    return 0;
}

 

转载于:https://www.cnblogs.com/ssyfj/p/9382838.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值