口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取

来源:互联网 发布:linux下登录oracle 编辑:程序博客网 时间:2024/04/19 05:07

  1. *          
  2. * 输入描述:出三个球,问得到3中不通过颜色的球口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取的可能取法。(枚举)   
  3. * 问题描述:  
  4. * 程序输出: 
  5. * 问题分析:略         
  6. * 算法设计:略          
  7. */  
  8. #include "stdafx.h"  
  9.   
  10. #include<iostream>  
  11.   
  12. #include<iomanip>  
  13.   
  14. using namespace std;  
  15.   
  16. int main()  
  17. {  
  18.     enum color{red,yellow,blue,white,black};//声明枚举类型color  
  19.   
  20.     color pri;  //定义color类型的变量pri  
  21.   
  22.     int i,j,k,n=0,loop;//n是累计不同颜色的组合数  
  23.   
  24.     for(i=red;i<=black;i++)//当i为某一颜色时  
  25.     {  
  26.         for(j=red;j<=black;j++)//当j为某一颜色时  
  27.         {  
  28.             if(i!=j)//若前两个球的颜色不同  
  29.             {  
  30.                 for(k=red;k<=black;k++)//只有前两个球的颜色不同,才需要检查第3个球的颜色  
  31.                 {  
  32.                     if(k!=i&&k!=j)//三个球的颜色都不同  
  33.                     {  
  34.                         n=n+1;//使累计值n加1  
  35.   
  36.                         cout<<setw(3)<<n;//输出当前的n值,字符宽度为3  
  37.   
  38.                         for(loop=1;loop<=3;loop++)//先后对三个球做处理  
  39.                         {  
  40.                             switch(loop)//loop的值先后为1,2,3  
  41.                             {  
  42.                             case 1:pri=color(i);break;//color(i)是强制类型转换,使pri的值为i  
  43.   
  44.                             case 2:pri=color(j);break;//                                   j  
  45.   
  46.                             case 3:pri=color(k);break;//                                   k  
  47.   
  48.                             default :break;  
  49.                             }  
  50.   
  51.                             switch(pri)   //判断pri的值,输出相应的颜色  
  52.                             {  
  53.                             case red:cout<<setw(8)<<"red";break;  
  54.   
  55.                             case yellow:cout<<setw(8)<<"yellow";break;  
  56.   
  57.                             case blue:cout<<setw(8)<<"blue";break;  
  58.   
  59.                             case white:cout<<setw(8)<<"white";break;  
  60.   
  61.                             case black:cout<<setw(8)<<"black";break;  
  62.   
  63.                             default :break;  
  64.                             }  
  65.                         }  
  66.   
  67.                         cout<<endl;  
  68.                     }  
  69.                 }  
  70.             }  
  71.         }  
  72.     }  
  73.   
  74.     cout<<"total:"<<n<<endl;  //输出符合条件的组合的个数  
  75.   
  76.     return 0;  
  77. }  
0 0
原创粉丝点击