一:比赛问题
两个乒乓球队进行比赛,各出三人。甲队为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
b vs %c
c vs %c
", 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("
");
}
}
}
}
}
system("pause");
return 0;
}