C程序设计11章 枚举类型例题

 

口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同色的球的可能取法,输出每种排列的情况。

#include <stdio.h>

int main(){
    enum color{red, yellow, blue, white, black};//声明一个枚举类型,枚举元素是常量,
                                                //在编译时按定义时的顺序使他们的值为0,1,2,...
    enum color pri;    //定义枚举类型的变量
    int i,j,k,n=0,loop;
    
    for(i=red; i<= black; i++){
        for(j=red; j<= black; j++){
            if(i != j)
            {
                for(k=red; k<= black; k++){
                    if(k !=i && k!=j){
                        printf("%-4d",++n);
                        
                        //熟练这种用法
                        for(loop=0; loop<3; loop++){
                            //为了将i,j,k的值都赋给pri,定义一个循环,每个循环中将i或者j或者k赋给pri
                            switch(loop){
                            case 0:    pri=(enum color)i; break;
                            case 1: pri=(enum color)j; break;
                            case 2: pri=(enum color)k; break;
                            default : break;
                            }
                            //为了输出i,j,k的值,先定义一个多分支选择语句
                            switch(pri)
                            {    case red:    printf("%-7s","red"); break;
                                case yellow: printf("%-7s","yellow"); break;
                                case blue:    printf("%-7s","blue"); break;
                                case white:    printf("%-7s","white"); break;
                                case black:    printf("%-7s","black"); break;
                                default : break;
                            }
                        }//end_for

                        printf("\n");
                    }
                }
            }
        }
    }

    printf("\ntotal:%5d\n",n);
    return 0;
}

 

posted @ 2017-08-05 11:05  Allen101  阅读(407)  评论(0)    收藏  举报