使用枚举类型变量输出每种排列情况


#include<stdio.h>
int main()
{
    enum Color {red,yellow,blue,white,black};
    enum Color i,j,k,pri;
    int n=0,loop;
    for(i=red;i<=black;i++)                   为什么这里会报错???no operator++(int) declared for postfix ++   我是完全按照课本打的
    for(j=red;j<=black;j++)
    if(j!=i)
    {
        for(k=red;k<=black;k++)
            if((k!=i)&&(k!=j))
            {
                n++;
                printf("-4d",n);
                for(loop=1;loop<=3;loop++)
                {
                    switch(loop)
                    {
                        case 1:pri=i;break;
                        case 2:pri=j;break;
                        case 3:pri=k;break;
                        default:break;
                    }
                    switch(pri)
                    {
                        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");
            }
    }
    printf("共有%d种可能的取法",n);
    return 0;
}

#include <stdio.h>

int main()
{
    enum Color { red, yellow, blue, white, black };
    int i, j, k, pri;
    int n = 0, 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))
                    {
                        n++;
                        printf("%-4d", n);

                        for (loop = 1; loop <= 3; loop++)
                        {
                            switch (loop)
                            {
                                case 1: pri = i; break;
                                case 2: pri = j; break;
                                case 3: pri = k; break;
                                default: break;
                            }

                            switch (pri)
                            {
                                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");
                    }
                }
            }
        }
    }

    printf("共有%d种可能的取法\n", n);

    return 0;
}

i不是整型,是枚举类型啊,枚举类型不支持++操作符啊

枚举类型不能用++操作
你把他看成一个宏定义就行了

enum Color {red,yellow,blue,white,black};
//相当于
#define red 0
#define yello 1
#define blue 2
#define white 3
#define black 4