enum枚举的用法之一:处理颜色的选择(简单)

在这里插入图片描述

程序

#include <stdio.h>
#include <string.h>// 提供 strcmp()、strchr()函数的原型
#include <stdbool.h> // C99 特性
#define LEN 30
char * s_gets(char * st, int n);

enum spectrum{ red, orange, yellow,  green, blue, violet };
 //第1个声明创建了spetrum作为标记名,允许把enum spetrum作为一个类型名使用。
 //第2个声明使color作为该类型的变量。

const char* colors[] = { "red", "orange", "yellow",
"green", "blue", "violet" };

int main(void)
{
	char chioce[LEN];
	enum spectrum color;
	bool color_is_found = false;

	puts("Enter a color (empty line to quit)");
	while (s_gets(chioce, LEN) != NULL && chioce[0] != '\0')
	{
		for (color = red; color <= violet; color++)
		{
			if (strcmp(chioce, colors[color] == 0))//比较我们输入的颜色英文和字符串数组中的字符是否对应
			{
				color_is_found = true;
				break;
				//找到跳出循环
			}
		}
		if (color_is_found)
		{
			switch (color)
			{
			case red:puts("Roses are red.");
				break;
			case orange: puts("Poppies are orange."); 
				break;
			case yellow:puts("Sunflowers are yellow.");
				break;
			case green: puts("Grass is green."); 
				break; 
			case blue: puts("Bluebells are blue."); 
				break; 
			case violet: puts("Violets are violet."); 
				break;
			}
		}
		else
		{
			printf("I don't know about the color %s.\n", chioce);
		}

		color_is_found = false;
		puts("Next color, please (empty line to quit):");
	}
	puts("Goodbye!");

	return 0;
}

char * s_gets(char * st, int n)
{
	char * ret_val;
	char * find;
	ret_val = fgets(st, n, stdin);
	if (ret_val)
	{
		find = strchr(st, '\n'); // 查找换行符
		if (find) // 如果地址不是 NULL,
		{
			*find = '\0'; // 在此处放置一个空字符
		}
		else
		{
			while (getchar() != '\n')
				continue; // 清理输入行
		}
	}

	return ret_val;
}

问题1

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扳手的海角

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值