C语言结构体和枚举

c 语言结构体

#include <stdio.h>
// 结构体和枚举
// 结构体用户自定义的数据类型, 允许存储不同类型的数据, 而数组只能存储相同类型的数据
// 定义一个结构体
//  struct 结构体名{结构体所包含的变量或数组}
// 第一种格式
struct student{
    char  *name; // 姓名
    int num; // 学号
    int age;  // 年龄
    char group;  // 所在学习小组
    float score; // 成绩
};
int main() {
    // 第二种格式
    struct {
        char  *name; // 姓名
        int num; // 学号
        int age;  // 年龄
        char group;  // 所在学习小组
        float score; // 成绩
    } stu1;
    //  结构体成员赋值
    stu1.name = "eric";
    stu1.num = 1234;
    stu1.age = 19;
    stu1.group = 'A';
    stu1.score = 99.9;
    // "eric 1992922 18 12 88"
    printf("stu1.name =%s stu1.num = %d stu1.age = %d  stu1.group = %c stu1.score = %.1f  \n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score);
    return 0;
}

在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。

#include <stdio.h>
#define Mon 1
#define Tues 2
#define Wed 3
#define Thurs 4
#define Fri 5
#define Sat 6
#define Sun 7
#define PI 3.14
int main() {
    int day;
    scanf("%d", &day);
    switch (day) {
        case Mon:
            puts("Monday"); break;
        case Tues:
            puts("Tuesday"); break;
        case Wed:
            puts("Wednesday"); break;
        case Thurs:
            puts("Thursday"); break;
        case Fri:
            puts("Friday"); break;
        case Sat:
            puts("Saturday"); break;
        case Sun:
            puts("Sunday"); break;
        default:
            puts("Error !");

    }
    return 0;
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/40052f23813141debfcd0d3b9b0db46f.png)


#define命令虽然能解决问题,但也带来了不小的副作用,导致宏名过多,代码松散,看起来总有点不舒服。C语言提供了一种枚举(Enum)类型,能够列出所有可能的取值,并给它们取一个名字。
枚举类型的定义形式为:
```c
enum typeName{ valueName1, valueName2, valueName3, ...... };
#include <stdio.h>
#define PI 3.14
int main() {
    // 默认 枚举是从0 开始的, 依次递增
//    enum week{Mon, Tues, Wed, Thurs, Fri, Sat, Sun};
//    printf("Tues = %d", Tues); // 1
//    enum week{Mon=1, Tues, Wed, Thurs, Fri, Sat, Sun};
//    printf("Tues = %d", Tues); // 2
    enum week{Mon=1, Tues=3, Wed, Thurs, Fri, Sat, Sun};
    printf("Wed = %d", Wed);// 4
    return 0;
}

ennum版本

#include <stdio.h>
int main() {
    enum week{Mon=1, Tues=3, Wed, Thurs, Fri, Sat, Sun} day;
    scanf("%d", &day);
    switch (day) {
        case Mon:
            puts("Monday"); break;
            case Tues:
                puts("Tuesday"); break;
            case Wed:
                puts("Wednesday"); break;
            case Thurs:
                puts("Thursday"); break;
            case Fri:
                puts("Friday"); break;
            case Sat:
                puts("Saturday"); break;
            case Sun:
                puts("Sunday"); break;
            default:
                    puts("Error !");

    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值