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; }