1. /*-----------------------------
  2. enum.c -- 使用枚举类型的值
  3. -----------------------------*/
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. //#include <stdbool.h> //C99特性
  8.  
  9. #define LEN 30
  10.  
  11. char* s_gets(char *st, int n);
  12.  
  13. enum spectrum {red, orange, yellow, green, blue, violet};
  14. const char *colors[] = {"red", "orange", "yellow", "green", "blue", "violet"};
  15.  
  16. int main()
  17. {
  18. char choice[LEN];
  19. int color;
  20. bool color_is_found = false;
  21.  
  22. puts("Enter a color (empty line to quit):");
  23.  
  24. while (s_gets(choice, LEN) != NULL && choice[] != '\0')
  25. {
  26. for (color = red; color != violet; ++color)
  27. {
  28. if (strcmp(choice, colors[color]) == )
  29. {
  30. color_is_found = true;
  31. break;
  32. }
  33. }
  34.  
  35. if (color_is_found)
  36. switch (color)
  37. {
  38. case red:
  39. puts("Roses are red.");
  40. break;
  41. case orange:
  42. puts("Poppies are orange.");
  43. break;
  44. case yellow:
  45. puts("Sunflowers are yellow.");
  46. break;
  47. case green:
  48. puts("Grass is green");
  49. break;
  50. case blue:
  51. puts("Bluebells are blue");
  52. break;
  53. case violet:
  54. puts("Violets are violet");
  55. break;
  56. }
  57. else
  58. printf("I don't know about the color %s.\n", choice);
  59.  
  60. color_is_found = false;
  61.  
  62. puts("Next color, please (empty line to quit):");
  63. }
  64.  
  65. puts("Goodbye");
  66.  
  67. return ;
  68. }
  69.  
  70. char* s_gets(char *st, int n)
  71. {
  72. char *ret_val, *find;
  73.  
  74. if (ret_val = fgets(st, n, stdin))
  75. {
  76. if (find = strchr(st, '\n'))
  77. *find = '\0';
  78. else
  79. while (fgetc(stdin) != '\n') continue;
  80. }
  81.  
  82. return ret_val;
  83. }

enum.c

第 14 章 结构和其他数据形式(enum枚举)的更多相关文章

  1. 第 14 章 结构和其他数据形式(伸缩型数组成员C99)

    伸缩型数组成员C99 声明一个伸缩型数组成员的规则: 1.伸缩型数组成员必须是结构的最后一个成员: 2.结构中必须至少有一个成员: 3.伸缩数组的方括号是空的. 示例 struct flex { in ...

  2. 第 14 章 结构和其他数据形式(names)

    *--------------------------------- names1.c -- 使用指向结构的指针 ---------------------------------*/ #includ ...

  3. 第 14 章 结构和其他数据形式(names3)

    /*----------------------------------- names3.c -- 使用指针和 malloc() ----------------------------------- ...

  4. 【机器学习实战】第14章 利用SVD简化数据

    第14章 利用SVD简化数据 SVD 概述 奇异值分解(SVD, Singular Value Decomposition): 提取信息的一种方法,可以把 SVD 看成是从噪声数据中抽取相关特征.从生 ...

  5. MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

    第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...

  6. 《how to design programs》14章 再论自引用数据

    这是一个家族谱: ;child(define-struct child (father mother name date eyes)) #lang racket ;child (define-stru ...

  7. C Primer Plus之结构和其他数据形式

    声明和初始化结构指针 声明结构化指针,例如: struct guy * him; 初始化结构指针(如果barney是一个guy类型的结构),例如: him = &barney; 注意:和数组不 ...

  8. C Primer Plus学习笔记(十三)- 结构和其他数据形式

    建立结构声明 结构声明(structure declaration)描述了一个结构的组织布局 struct book { char title[MAXTITL]; char author[MAXAUT ...

  9. 《机器学习实战》学习笔记——第14章 利用SVD简化数据

    一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...

随机推荐

  1. console 调试技巧

    前言 如果统计一番前端最常用的方法,那么 console.log 一定位列其中.无论你写的是原生 JS 亦或者是 JQuery.Vue等等,调试之时,都离不开 console.log 方法.但是,co ...

  2. linux笔记-tar 解压缩命令

    tar 解压缩命令 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只 ...

  3. @JsonProperty和@JsonAlias的区别

    @JsonProperty这个注解提供了序列化和反序列化过程中该java属性所对应的名称@JsonAlias这个注解只只在反序列化时起作用,指定该java属性可以接受的更多名称 public stat ...

  4. 使你的IT职业生涯更上一层楼de14条建议

    摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...

  5. Java中==规则

    普通对象== 一般说来,java中的==指的是比较两个对象的内存地址是否相同.同时,在java中,一旦使用new关键字,则说明在内存中开辟了一段空间,用于存储对象. 假设我们有一个Person类,请看 ...

  6. Java基础——Servlet(二)

    好久没有写博客了,最近有在学习.可能是遇到瓶颈了,学到Servlet这里觉得有些吃力.前几天已经学完一遍了,但是学完之后觉得还是很迷茫.去知乎和百度上搜索,遇到的都是一些概念之类的讲解.核心的介绍说, ...

  7. HTML标签参考(一)

    hi,小哥哥小姐姐们,我们今天要说的是前端的入门,却也是十分重要的意识的培养哦! • html中的标签数量是很多的,据人统计大概有300个左右,并且每年都会以20-30个的速度增加着,但是这么多的标签 ...

  8. 【代码笔记】iOS-TableViewOfTwoSecton

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  9. 各类无次数限制的免费API接口整理

    各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免 ...

  10. [基础知识]row类visible使用

    使用row的visibe属性,要反向遍历rowset,因为如果正向遍历,rowset是实时变化的,行号是错误的.正确代码如下: Local integer &k; For &k = & ...