• C语言----枚举(进阶篇二十四)


      枚举的作用

        有一种变量类型,它的值只有固定的几种选择之一,比如性别(男、女)、硬币的两面(正、反)、星期(周一到周日)、居住省份(36个省市自治区名称)等等,这样的变量适合用enum枚举类型。

      使用枚举

        说明:

        ※自定义的类型一般都放在main函数前面,枚举也遵循这个规律:

        enum sex{boy,girl};

        main(){…}  

        ※枚举类型在定义时,系统会自动用整数为枚举的可用值从0开始用整数进行编号,如上面的boy的值为0,girl为1,也可以用printf(“%d”,gril)这样的语句输出。

        枚举值也可以叫做“符号常量”,有时候用英文单词组成的符号常量来代替简单的数字,会使程序的可读性大大提高。比如我们看到boy第一反应这就是男孩,而你看到数字0,并不知道这表示什么意思。

          可以通过赋值来改变枚举常量的值:

          enum color{red=4,green=1,blue,black};

          这条语句中从blue开始会自动往后递增,blue的值为2,black为3。

        ※不能给枚举常量赋值,比如boy=2,这是错误的写法。

        ※枚举常量相当于一个关键字,程序中不得出现与枚举常量相同的标识符。

        ※枚举支持所有的逻辑运算,也可以递增递减,比如上面的枚举类型color值为green,color++就得到blue,color+=2就得到black。有了这个规律,我们就用循环来处理枚举变量就非常方便。

        程序1

          箱子里有3种不同颜色(红绿蓝)的乒乓球若干个,请任意摸3个,如果摸到2个相同颜色的为二等奖,奖金1元,摸到3个相同颜色的为一等奖,奖金10元。

    // 24-1枚举类型例子.c
    //
    
    #include <stdio.h>
    
    enum color{red,blue,green};
    main()
    {
        enum color ball[3];
        int r;
        srand(time(0));    
        for (int i = 0; i < 3; i++)
        {
            r = rand() % 3;  
            switch (r)
            {
            case 0:
                ball[i] = red;
                break;
            case 1:
                ball[i] = blue;
                break;
            case 2:
                ball[i] = green;
                break;
            }
        }
    
    
        for (int i = 0; i < 3; i++)
        {
            switch (ball[i])
            {
            case red:
                printf("red ");
                break;
            case blue:
                printf("blue ");
                break;
            case green:
                printf("green ");
                break;
            }
        }
    }

        枚举常量不支持直接的输入输出,因此,枚举变量经常会跟swith联用而达到直观的文字输出效果。

        我国规定周六和周日双休日,请输入一个星期几,由程序判断并输出这一天是否是休息日。

    // 24-2枚举选择星期几.c
    
    #include <stdio.h>
    enum Week
    {
        monday = 1,
        tuesday = 2,
        wednesday = 3,
        thursday = 4,
        friday = 5,
        saturday = 6,
        sunday = 7
    }day;
    
    main()
    {
        int i;
        printf("请输入星期几,(数字 1~ 7 ,1代表星期一...7:星期日)
    ");
        scanf_s("%d", &i);
        switch (i)
        {
        case 1:
            day = monday;
            break;
        case 2:
            day =tuesday;
            break;
        case 3:
            day = wednesday;
            break;
        case 4:
            day = thursday;
            break;
        case 5:
            day = friday;
            break;
        case 6:
            day = saturday;
            break;
        case 7:
            day = sunday;
            break;
        }
    
    
        switch (day)
        {
        case saturday:
        case sunday:
            printf("今天是休息日!");
            break;
        default:
            printf("今天是工作日!");
        }
    }
  • 相关阅读:
    win10重装vscode后打不开
    GDB 调试
    分布式架构--概述一
    汇编语言答案(王爽)第三版
    matplotlib之热成像图
    matplotlib之等高线图
    matplotlib之饼状图
    matplotlib之条形图绘制
    360图片网站批量抓取
    数据转换
  • 原文地址:https://www.cnblogs.com/httpcc/p/15484675.html
Copyright © 2020-2023  润新知