万年历 打印出全年年历。 输入要求:四位数年份和该年元旦星期几。 算法说明: 一年12个月,计算第1(month)月的天数;输出第1(month)月的年历。 1)天数的最大值有大小月、闰年之分输出年历 2)月份表头、星期表头、该月份第一天位置、输入日历 【综合编程、结构控制。getchar的使用】
时间: 2023-12-18 16:02:52 浏览: 187
好的,我来回答你的问题。以下是代码实现:
```
#include <stdio.h>
int main() {
int year, firstDay;
printf("请输入四位数年份和该年元旦星期几(星期日为0,星期一为1,以此类推):");
scanf("%d %d", &year, &firstDay);
printf("\n\n\n");
printf(" %d年\n", year);
printf(" 一月 二月 三月\n");
printf("日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六\n");
int month, day, week;
for (month = 1; month <= 12; month++) {
printf("\n");
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
day = 29;
} else {
day = 28;
}
break;
}
for (week = 0; week < firstDay; week++) {
printf(" ");
}
for (day = 1; day <= 31; day++) {
printf("%2d ", day);
if (++week > 6) {
printf(" ");
week = 0;
}
}
firstDay = week;
}
printf("\n\n\n");
return 0;
}
```
这个程序可以根据输入的年份和元旦星期几,输出该年的全年日历。具体实现如下:
首先,让用户输入年份和元旦星期几,然后输出年历的表头,包括年份、月份和星期。
然后,使用 for 循环遍历每个月,根据月份计算该月的天数,并根据该月第一天是星期几,输出该月的日历。
在输出每个月的日历时,使用两个 for 循环,第一个 for 循环用于输出该月第一天之前的空格,第二个 for 循环用于输出该月的每一天。同时,使用一个变量 week 记录输出日历时的星期,当星期数为 7 时换行,同时将 week 重置为 0。
这样,就可以输出该年的全年日历了。
阅读全文