用c语言帮我写一个打印某年的万年历的程序,并调用函数模块,用到数组
时间: 2024-03-23 15:43:43 浏览: 58
好的,下面是一个打印某年的万年历并调用函数模块的 C 语言程序,使用了数组:
```
#include <stdio.h>
// 计算某一年某一月的天数
int get_days(int year, int month)
{
int days;
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 打印某一年某一月的日历
void print_calendar(int year, int month, int start_day)
{
int days, i, j, k;
int month_days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
days = get_days(year, month);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
month_days[1] = 29;
}
printf(" 日 一 二 三 四 五 六\n");
k = 1;
for (i = 1; i <= 6; i++) {
for (j = 0; j < 7; j++) {
if (i == 1 && j < start_day) {
printf(" ");
} else if (k <= days) {
printf("%3d", k);
k++;
} else {
break;
}
}
if (k > days) {
break;
}
printf("\n");
}
printf("\n");
}
int main()
{
int year, i, start_day;
printf("请输入年份:");
scanf("%d", &year);
printf("%d年的万年历如下:\n", year);
for (i = 1; i <= 12; i++) {
start_day = (get_days(year, i - 1) + start_day) % 7;
printf("==========%d月==========\n", i);
print_calendar(year, i, start_day);
}
return 0;
}
```
在该程序中,我们定义了一个保存每个月天数的数组 `month_days`,并在 `get_days` 函数中使用了该数组。在 `print_calendar` 函数中,我们首先使用 `get_days` 函数计算某一年某一月的天数,然后根据起始日(即该月的第一天是周几)和天数打印日历。在 `main` 函数中,我们先让用户输入年份,然后循环调用 `print_calendar` 函数打印该年的每个月的日历。其中,起始日是根据上个月的天数和起始日计算得出的,每个月的起始日都是上个月的天数和起始日的和对 7 取余。
阅读全文