中间缺的代码怎么填
时间: 2023-07-10 10:17:04 浏览: 80
中间代码生成
3星 · 编辑精心推荐
这里需要实现函数 `printMonth`,用来打印指定年月的日历。以下是函数的代码实现:
```
void printMonth(int year, int month){
// 计算本月的天数
int days;
if(month == 2){ // 二月特判
if(leapYear(year))
days = 29;
else
days = 28;
}
else if(month == 4 || month == 6 || month == 9 || month == 11)
days = 30;
else
days = 31;
// 计算本月第一天是星期几
int firstDay = whatDay(year, month);
// 输出日历
printf("Sun Mon Tue Wed Thu Fri Sat\n"); // 星期头
for(int i = 1; i < firstDay; i++){ // 输出本月第一天之前的空格
printf(" ");
}
for(int i = 1; i <= days; i++){ // 输出日期
printf("%-4d ", i);
if((firstDay + i - 1) % 7 == 0){ // 每输出7个日期换行
printf("\n");
}
}
if((firstDay + days - 1) % 7 != 0){ // 输出本月最后一天之后的空格
for(int i = 0; i < 7 - (firstDay + days - 1) % 7; i++){
printf(" ");
}
printf("\n");
}
}
```
该函数首先根据给定的年月计算本月的天数,然后调用 `whatDay` 函数计算本月第一天是星期几。接着按照格式输出日历,每行输出 7 个日期,当遇到下一行时换行。如果本月最后一天不是周六,则在最后一行输出本月最后一天之后的空格。
希望能够帮到您!
阅读全文