#include <stdio.h>
// 定义季度和月份
enum Quarter { Q1 = 1, Q2, Q3, Q4 };
enum Month { Jan = 1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
// 使用 typedef 重定义 enum 类型
typedef enum Quarter Quarter;
typedef enum Month Month;
int main(void) {
// 输入年月日
int year, month, day;
printf("Enter year: ");
scanf("%d", &year);
printf("Enter month: ");
scanf("%d", &month);
printf("Enter day: ");
scanf("%d", &day);
// 确定哪个季度
Quarter quarter;
if (month <= 3) {
quarter = Q1;
} else if (month <= 6) {
quarter = Q2;
} else if (month <= 9) {
quarter = Q3;
} else {
quarter = Q4;
}
// 确定哪个月份
Month m = (Month) month;
// 确定星期几
int w = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
const char* weekdays[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
const char* weekday = weekdays[w];
// 输出结果
printf("%d-%02d-%02d is quarter %d, month %d (%s), and a %s.\n", year, month, day, quarter, m, m, weekday);
return 0;
}
望采纳。
代码实现如下
#include <stdio.h>
enum Quarter {
Q1,
Q2,
Q3,
Q4
};
typedef enum Quarter Quarter;
enum Month {
Jan,
Feb,
Mar,
Apr,
May,
Jun,
Jul,
Aug,
Sep,
Oct,
Nov,
Dec
};
typedef enum Month Month;
enum Weekday {
Sun,
Mon,
Tue,
Wed,
Thu,
Fri,
Sat
};
typedef enum Weekday Weekday;
int main(void) {
int year, month, day;
printf("输入日期 (yyyy mm dd): ");
scanf("%d%d%d", &year, &month, &day);
// 计算季度
Quarter quarter;
if (month <= 3) {
quarter = Q1;
} else if (month <= 6) {
quarter = Q2;
} else if (month <= 9) {
quarter = Q3;
} else {
quarter = Q4;
}
// 计算月份
Month m = month - 1;
// 计算星期几
int a = (14 - month) / 12;
int y = year - a;
int m1 = month + 12 * a - 2;
int d = (day + y + y / 4 - y / 100 + y / 400 + (31 * m1) / 12) % 7;
Weekday w = d;
printf("季度: %d\n", quarter);
printf("月度: %d\n", m);
printf("星期几: %d\n", w);
return 0;
}