int day_count(int month) { switch(month) { case 1: return 0;break; case 2: return first1month;break; case 3: return first2month;break; case 4: return first3month;break; case 5: return first4month;break; case 6: return first5month;break; case 7: return first6month;break; case 8: return first7month;break; case 9: return first8month;break; case 10: return first9month;break; case 11: return first10month;break; case 12: return first11month;break; } } char * month_name(int month) { switch(month) { case 1: return "January"; break; case 2: return "February"; break; case 3: return "March"; break; case 4: return "April"; break; case 5: return "May"; break; case 6: return "June"; break; case 7: return "July"; break; case 8: return "August"; break; case 9: return "September"; break; case 10: return "October"; break; case 11: return "November"; break; case 12: return "December"; break; default: break; } }
时间: 2024-02-15 10:29:06 浏览: 189
这段代码实现了两个函数,一个是计算某个月份对应的天数,另一个是获取某个月份的英文名称。
函数day_count(int month)接受一个整型参数month,代表月份。根据不同的月份,函数返回该月对应的天数。月份从1开始,到12结束。
函数month_name(int month)也接受一个整型参数month,根据不同的月份,返回该月的英文名称。如果month不在1-12之间,默认返回空值(可以考虑返回"Invalid month"等信息)。
这些函数可能是实现一个日历或日期计算系统中的一部分。
相关问题
#include <stdio.h> #include <stdlib.h> int is_leap_year(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } int get_month_days(int year, int month) { int days = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: days = is_leap_year(year) ? 29 : 28; break; default: break; } return days; } void print_calendar(int year, int month) { int days = get_month_days(year, month); int first_day = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400; for (int i = 1; i < month; i++) { first_day += get_month_days(year, i); } int week_day = (first_day + 1) % 7; // 1月1日是星期一 printf("日 一 二 三 四 五 六\n"); for (int i = 0; i < week_day; i++) { printf(" "); } for (int i = 1; i <= days; i++) { printf("%2d ", i); week_day++; if (week_day == 7) { printf("\n"); week_day = 0; } } printf("\n"); } int main() { int year, month; printf("请输入年份和月份(用空格隔开):"); scanf("%d %d", &year, &month); printf("%d年%d月的月历如下所示:\n", year, month); print_calendar(year, month); return 0; }怎么 改成输出是按照星期一到星期日的顺序
要按照星期一到星期日的顺序输出,只需要在print_calendar函数中修改输出格式即可。具体修改如下:
1. 修改星期的顺序,将“日 一 二 三 四 五 六”改为“一 二 三 四 五 六 日”。
2. 修改第一个循环,从0开始而不是1开始,使得第一天是星期一。
3. 修改第二个循环,将week_day的初始值改为1,表示第一天为星期一。
修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int get_month_days(int year, int month) {
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
days = is_leap_year(year) ? 29 : 28;
break;
default:
break;
}
return days;
}
void print_calendar(int year, int month) {
int days = get_month_days(year, month);
int first_day = (year - 1) * 365 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400;
for (int i = 0; i < month - 1; i++) {
first_day += get_month_days(year, i + 1);
}
int week_day = (first_day + 1) % 7; // 1月1日是星期一
printf("一 二 三 四 五 六 日\n");
for (int i = 0; i < week_day; i++) {
printf(" ");
}
for (int i = 1; i <= days; i++) {
printf("%2d ", i);
week_day++;
if (week_day == 7) {
printf("\n");
week_day = 0;
}
}
printf("\n");
}
int main() {
int year, month;
printf("请输入年份和月份(用空格隔开):");
scanf("%d %d", &year, &month);
printf("%d年%d月的月历如下所示:\n", year, month);
print_calendar(year, month);
return 0;
}
```
阅读全文