一、 定义枚举类型的好处是可以让编程者方便的使用自定义的变量值来替代数字值,这样会使我们的代码有更高的可读性,而从本质上讲枚举除了在代码中是以文字形式出现的变量值之外(内部还是数字)与整数值其实并没有什么区别。
二、
Description
请定义具有red, orange, yellow, green, blue, violet六种颜色的枚举类型color,根据输入的颜色名称,输出以下六种植物花朵的颜色:
Rose(red), Poppies(orange), Sunflower(yellow), Grass(green), Bluebells(blue), Violets(violet)。如果输入的颜色名称不在枚举类型color中,例如输入purple,请输出I don’t know about the color purple.
Input
第一行输入一个n, 代表有n 组询问。( 1 <= n <= 10)
接下来的n行, 每行有一个字符串代表颜色名称,颜色名称最多30个字符。
Output
输出n 行。
每行输出对应颜色的植物名称。
例如:Bluebells are blue. 如果输入的颜色名称不在枚举类型color中,例如purple, 请输出I don’t know about the color purple.
Sample
Input
3
blue
yellow
purple
Output
Bluebells are blue.
Sunflower are yellow.
I don't know about the color purple.
#include<iostream>
#include<algorithm>
#include<iterator>
#include <string.h>
#include <stdio.h>
using namespace std;
enum color {red,orange,yellow,green,blue,violet,no} a;
int main()
{
int n;
char s[31];
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%s",s);
if(strcmp(s,"red")==0)
{
a=red;
}
else if(strcmp(s,"orange")==0)
{
a=orange;
}
else if(strcmp(s,"yellow")==0)
{
a=yellow;
}
else if(strcmp(s,"green")==0)
{
a=green;
}
else if(strcmp(s,"blue")==0)
{
a=blue;
}
else if(strcmp(s,"violet")==0)
{
a=violet;
}
else
{
a = no;
}
switch(a)
{
case red:
printf("Rose are red.\n");
break;
case orange:
printf("Poppies are orange.\n");
break;
case yellow:
printf("Sunflower are yellow.\n");
break;
case green:
printf("Grass are green.\n");
break;
case blue:
printf("Bluebells are blue.\n");
break;
case violet:
printf("Violets are violet.\n");
break;
case no:
printf("I don't know about the color %s.\n",s);
break;
}
}
return 0;
}