题目

定义枚举类型 Weekday 表示星期一至星期日,从标准输入读入一个整数(1~7),输出对应星期的英文全称。若输入不在 1~7 范围内提示错误。

输入格式:一行输入一个整数 k。

输出格式:输出对应的英文星期名称(如 Monday);无效数字输出 error。

数据范围与约定:k 为整数。

思路与算法

1. 枚举类型 enum 的语义
枚举类型定义一组命名的整型常量,默认从 0 开始自增。可以显式指定首个元素为 1:enum Weekday { MON = 1, TUE, WED, THU, FRI, SAT, SUN };。

2. 提高代码自解释性
使用有意义的枚举标识符代替生硬的魔法数字,配合 switch 语句使状态流转更具可读性。

完整程序

#include <stdio.h>

// 枚举类型:从 0 开始依次递增赋整数值
enum Week { SUN, MON, TUE, WED, THU, FRI, SAT };

int main(void)
{
    int d;
    // 字符串指针数组作为静态查表,将枚举整数映射为英文全称
    const char *names[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

    if (scanf("%d", &d) != 1 || d < 0 || d > 6) {
        return 1;
    }
    printf("%s\n", names[d]);
    return 0;
}

运行示例

输入:

1

输出:

Monday