题目:
定义一个枚举类型Month(别名),包含一年中12个月份的英文单词。并从一月份开始,为枚举成员分配一个从1开始的数字值。
例如:JANUARY=1,FEBRUARY=2,依此类推…
编写一个函数,接收Month类型的参数,返回该月份有多少天。
注意:
不考虑平年闰年,2月份一律输出28天。
不要把12个case分支做12个处理,那也太笨了!
枚举值应当采用英文单词字母全部大写的命名风格,类似宏定义。
关键点
分析:
:
代码
#include <stdio.h>
// 定义枚举类型Month
typedef enum {
JANUARY = 1,
FEBRUARY,
MARCH,
APRIL,
MAY,
JUNE,
JULY,
AUGUST,
SEPTEMBER,
OCTOBER,
NOVEMBER,
DECEMBER
} Month;
// 定义函数,根据Month枚举返回该月的天数
int days_in_month(Month month) {
switch (month) {
case JANUARY:
case MARCH:
case MAY:
case JULY:
case AUGUST:
case OCTOBER:
case DECEMBER:
return 31;
case APRIL:
case JUNE:
case SEPTEMBER:
case NOVEMBER:
return 30;
case FEBRUARY:
return 28;
default:
// 错误处理
return -1;
}
}
int main(void) {
Month month = FEBRUARY;
printf("Days in February: %d\n", days_in_month(month));
month = APRIL;
printf("Days in April: %d\n", days_in_month(month));
return 0;
}
解决方案总结:
: