搜索

[DemoCode下载] 枚举与结构体混合使用的学习笔记

[复制链接]
104|8
 楼主 | 2020-11-22 19:43 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>

  2. enum Week{ MON=1, TUE, WED, THU, FRI, SAT, SUN};
  3. enum Month{January=1,February,March,April,May,June,July,August,September,October,November,December};
  4. struct Time
  5. {
  6.         unsigned        int                year;
  7.         enum                Month        month;
  8.         unsigned        char        day;
  9.         enum                Week        week;
  10.         unsigned        char        hour;
  11.         unsigned        char        min;
  12.         unsigned        char        sec;       
  13. };

  14. void delay(unsigned int x)
  15. {
  16.         while(x)
  17.                 {
  18.                         x--;
  19.                         unsigned int a,b;
  20.                         for(a=0;a<20000;a++)
  21.                                 for(b=0;b<20000;b++);
  22.                 }       
  23. }
  24. struct Time time;

  25. void time_update(void)
  26. {
  27.         if(++time.sec==60)
  28.                 {
  29.                         time.sec=0;
  30.                         if(++time.min==60)
  31.                         {
  32.                                 time.min=0;
  33.                                 if(++time.hour==24)
  34.                                 time.hour=0;
  35.                         }
  36.                 }       
  37. }

  38. void time_display(void)
  39. {
  40.        
  41. }

  42. int main(void)
  43. {
  44.         int index=0;
  45.        
  46.         time.year=2020;
  47.         time.month=November;
  48.         time.day=3;
  49.         time.hour=23;
  50.         time.min=40;
  51.         time.sec=10;



  52.         printf("index:");
  53.         while(1)
  54.                 {
  55.                         printf("%4d\b\b\b\b",index++);
  56.                         time_update();
  57.                         time_display();
  58.                         delay(10000);

  59.                 }       
  60.         return 0;
  61. }
复制代码


使用特权

评论回复
 楼主 | 2020-11-22 19:45 | 显示全部楼层
之前发过一个枚举的学习笔记,这次把上次学习笔记的深入版本发出来
首先枚举是干什么的大家要知道。就是将变量的取值范围固定到某个整数集里,同时增加程序的可读性。
然后作为一个变量元素,还可以作为结构体的成员元素。

使用特权

评论回复
 楼主 | 2020-11-22 20:24 | 显示全部楼层
这个例子就是定义了星期7天的枚举变量,与12个月份的枚举变量,然后作为一个时间结构体的部分成员。
该例子演示了如何将枚举类型的变量作为结构体的一个成员。

使用特权

评论回复
 楼主 | 2020-11-22 20:49 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. enum Week{ MON=1, TUE, WED, THU, FRI, SAT, SUN};
  5. enum Month{January=1,February,March,April,May,June,July,August,September,October,November,December};
  6. struct Time
  7. {
  8.         unsigned        int                year;
  9.         enum                Month        month;
  10.         unsigned        char        day;
  11.         enum                Week        week;
  12.         unsigned        char        hour;
  13.         unsigned        char        min;
  14.         unsigned        char        sec;       
  15. };

  16. void delay(unsigned int x)
  17. {
  18.         while(x)
  19.                 {
  20.                         x--;
  21.                         unsigned int a,b;
  22.                         for(a=0;a<20000;a++)
  23.                                 for(b=0;b<20000;b++);
  24.                 }       
  25. }
  26. struct Time time;

  27. void time_update(void)
  28. {
  29.         if(++time.sec==60)
  30.                 {
  31.                         time.sec=0;
  32.                         if(++time.min==60)
  33.                         {
  34.                                 time.min=0;
  35.                                 if(++time.hour==24)
  36.                                 time.hour=0;
  37.                         }
  38.                 }       
  39. }

  40. void time_display(void)
  41. {
  42.          printf("%4d年%2d月%2d日\n",time.year,time.month,time.day);
  43.         if(time.week==7)
  44.                 printf("星期日\n");
  45.         else printf("星期%d\n",time.week);
  46.          printf("%02d:%02d:%02d\n",time.hour,time.min,time.sec);
  47.         system("cls");
  48. }

  49. int main(void)
  50. {
  51.        
  52.         time.year=2020;
  53.         time.month=November;
  54.         time.day=22;
  55.         time.week=SUN;
  56.         time.hour=23;
  57.         time.min=40;
  58.         time.sec=10;



  59.         printf("index:");
  60.         while(1)
  61.                 {

  62.                         time_update();
  63.                         time_display();
  64.                         delay(10000);

  65.                 }       
  66.         return 0;
  67. }
复制代码

使用特权

评论回复
| 2020-11-22 22:25 | 显示全部楼层
比较典型的例子用星期

使用特权

评论回复
| 2020-11-22 22:38 | 显示全部楼层
枚举占内存吗

使用特权

评论回复
| 2020-11-23 09:11 | 显示全部楼层

使用特权

评论回复
| 2020-11-23 09:26 | 显示全部楼层

同问:枚举占内存吗

使用特权

评论回复
| 2020-11-24 10:00 | 显示全部楼层
不错,支持

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表