给定5种颜色的若干小球,颜色为分别为“红、黄、蓝、白、黑”,若每次取三球,且颜色互不相同,问共有几种取法,并分别输出每次取球的颜色。
源代码如下:
#include<iostream>
using namespace std;
void function(int x) {
int yanSe = x; //定义颜色变量,方便后续switch语句判断
switch (yanSe) {
case 0:
cout << "红";
break;
case 1:
cout << "黄";
break;
case 2:
cout << "蓝";
break;
case 3:
cout << "白";
break;
case 4:
cout << "黑";
break;
}
}
int main() {
system("color f0");
/*
口袋中有红、黄、蓝、白、黑5种颜色的球若干,每次从口袋中取3个球,且球为不同颜色,问有多少种取法?
*/
int n = 0; //定义变量n,存储取法总数
/*
三重嵌套循环判断以实现依次取出一球
二重循环条件为j = i + 1,表示第二次从第一次取球之后开始判断
三重循环条件为k = j + 1,表示第三次从第二次取球之后开始判断
中间嵌套的if语句,表象意义为当i,j,k各不相同时,使次数n+1,以实现三球颜色各不相同时所得总次数的正确性,
并以此为条件调用函数输出每一次取球的结果。
*/
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
for (int k = j + 1; k < 5; k++) {
if (i != j && j != k && i != k) {
function(i), function(j), function(k);
cout << endl;
n += 1;
}
}
}
}
cout << "\n‘红黄蓝白黑’5种颜色球若干,每次取三球且颜色不一,共有以上(" << n << ")种取法。" << endl;
return 0;
}