这是小弟第一次发自己的代码,写的不好希望大家指点,以后会继续努力。
/*
问题:取彩球;口袋中有红、黄、蓝、白、黑五色球若干个,
每次从口袋中取出3个不同颜色的球,问有多少种取法?
分析:由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。
设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且i≠j≠k。
可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的组合并输出。
作者:RaoBaggiO
日期:2007.10.10
*/
# include <iostream.h>
# include <iomanip.h>
# include <cmath>
void main()
{
enum color_ball {red, yellow, blue, white, black}; // 起标识作用,程序中未用到;
int i, j, k; // 3个循环变量;
int counter = 0; // 此计数器是计算取彩球的方法数;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
{
if(j==i) // 当第二次去取出的球和第一次取出的球颜色相同就结束本轮循环;
{
continue;
}
for(k=0; k<5; k++) // 当第三次去取出的球与第一次或第二次取出的球颜色相同就结束本轮循环;
{
if(k==i||k==j)
{
continue;
}
switch(i) // 输出球的颜色;
{
case 0:cout << setw(15) << "red" ; break; // 函数stew(15)是表示一个输出占15个位置;
case 1:cout << setw(15) << "yellow" ; break;
case 2:cout << setw(15) << "blue" ; break;
case 3:cout << setw(15) << "white" ; break;
case 4:cout << setw(15) << "black" ; break;
}
switch(j)
{
case 0:cout << setw(15) << "red" ; break;
case 1:cout << setw(15) << "yellow" ; break;
case 2:cout << setw(15) << "blue" ; break;
case 3:cout << setw(15) << "white" ; break;
case 4:cout << setw(15) << "black" ; break;
}
switch(k)
{
case 0:cout << setw(15) << "red" ; break;
case 1:cout << setw(15) << "yellow" ; break;
case 2:cout << setw(15) << "blue" ; break;
case 3:cout << setw(15) << "white" ; break;
case 4:cout << setw(15) << "black" ; break;
}
counter++;
cout << endl;
}
}
}
cout << "Total is: " << counter << endl;
}