鱼C论坛

 找回密码
 立即注册
查看: 2365|回复: 1

关于枚举类型的问题?

[复制链接]
发表于 2011-12-29 15:55:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void main()
{
        enum color{red,yellow,blue,white,black};
        enum color i,j,k,pri;
        int n,loop;
        n=0;
        for(i=red;i<=black;i++)
                for(j=red;k<=black;j++)
                        if(i!=j)
                        {
                                for(k=red;k<=black;k++)
                                        if((k!=i)&&(k!=j))
                                        {
                                                n=n+1;
                                                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("\ntotal:%5d\n",n);
}


这个程序是书中枚举类型章节给出的例题,但在c++中运行的结果却是错误的,这是为什么,小甲鱼视频058中实现书中效果的代码是什么?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-29 17:42:31 | 显示全部楼层
枚举类型不能++,且和int类型转换的时候需要强制转换,修改后的代码如下:
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         enum color{red,yellow,blue,white,black};
  5.         //enum color i,j,k,pri;
  6.                 enum color pri;
  7.                 int i,j,k;
  8.         int n,loop;
  9.         n=0;
  10.         for(i=red;i<=black;i++)
  11.                 for(j=red;k<=black;j++)
  12.                         if(i!=j)
  13.                         {
  14.                                 for(k=red;k<=black;k++)
  15.                                         if((k!=i)&&(k!=j))
  16.                                         {
  17.                                                 n=n+1;
  18.                                                 printf("%-4d",n);
  19.                                                 for(loop=1;loop<=3;loop++)
  20.                                                 {
  21.                                                         switch(loop)
  22.                                                         {
  23.                                                                                                                         /*
  24.                                                                 case 1:pri=i;break;
  25.                                                                 case 2:pri=j;break;
  26.                                                                 case 3:pri=k;break;
  27.                                                                 default:break;
  28.                                                                                                                                 */
  29.                                                                                                                             case 1:pri=(enum color)i;break;
  30.                                                                 case 2:pri=(enum color)j;break;
  31.                                                                 case 3:pri=(enum color)k;break;
  32.                                                                 default:break;
  33.                                                         }
  34.                                                         switch(pri)
  35.                                                         {
  36.                                                                 case red:printf("%-10s","red");break;
  37.                                                                 case yellow:printf("%-10s","yellow");break;
  38.                                                                 case blue:printf("%-10s","blue");break;
  39.                                                                 case white:printf("%-10s","white");break;
  40.                                                                 case black:printf("%-10s","black");break;
  41.                                                                 default:break;
  42.                                                         }
  43.                                                 }
  44.                                                 printf("\n");

  45.                                         }
  46.                         }
  47.                         printf("\ntotal:%5d\n",n);
  48. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-10 12:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表