题目
定义枚举类型 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