Menu
CoddyTech

声明和使用枚举

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 56 课,共 63 课。

现在你已经定义了一个 enum,可以创建这种枚举类型的变量,并为它们赋予有意义的值。枚举真正的优势就在这里:你不必处理令人困惑的数字,而是可以使用描述性名称。

要声明一个枚举类型的变量,你可以使用与声明其他变量相同的语法:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

然后,你可以使用枚举中的命名常量为这些变量赋值:

today = WEDNESDAY;
weekend_day = SATURDAY;

把它和使用原始数字进行比较:today = 2; 和 weekend_day = 5;。枚举版本能让你立即知道正在处理星期几,而使用数字时,你需要记住每个值代表什么。这样,代码会更易读,也不容易出错。

challenge icon

挑战

简单

创建一个 C 程序,演示如何声明和使用枚举变量,构建一个简单的任务管理系统。程序应满足以下要求:

  1. 定义一个名为 enum 的 TaskStatus,其中包含以下常量,顺序必须完全一致:
    • PENDING
    • IN_PROGRESS
    • COMPLETED
    • CANCELLED
  2. 在主函数中:
    • 声明 3 个 enum TaskStatus 类型的变量,分别命名为 task1、task2 和 task3
    • 从输入中读取 3 个整数,分别表示每个任务的状态(0、1、2 或 3)
    • 根据输入,将对应的枚举值赋给每个任务变量:
      • 如果输入是 0,则赋值为 PENDING
      • 如果输入是 1,则赋值为 IN_PROGRESS
      • 如果输入是 2,则赋值为 COMPLETED
      • 如果输入是 3,则赋值为 CANCELLED
    • 使用枚举值打印每个任务的状态,格式必须完全一致:
      • Task 1 status: [numeric_value]
      • Task 2 status: [numeric_value]
      • Task 3 status: [numeric_value]
    • 统计并打印每种状态的任务数量:
      • Pending tasks: [count]
      • In progress tasks: [count]
      • Completed tasks: [count]
      • Cancelled tasks: [count]
    • 计算并打印活动任务总数(状态为 PENDING 或 IN_PROGRESS 的任务),格式必须完全一致:Active tasks: [count]

这个挑战演示了如何使用有意义的名称而不是原始数字,让枚举变量使代码更易读。你将练习声明枚举变量、根据输入赋值枚举值、在比较中使用枚举常量,以及使用枚举值进行计算。

亲手试试

#include <stdio.h>

// TODO: 在这里定义 TaskStatus 枚举

int main() {
    // 读取三个任务状态的输入
    int status1, status2, status3;
    scanf("%d", &status1);
    scanf("%d", &status2);
    scanf("%d", &status3);
    
    // TODO: 声明三个 enum TaskStatus 变量(task1, task2, task3)
    
    // TODO: 根据输入赋予枚举值
    
    // TODO: 输出任务状态
    
    // TODO: 统计每个类别中的任务数量
    
    // TODO: 计算并输出活跃任务的数量
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器