帮我用C语言写一个万年历
时间: 2023-04-08 16:00:42 浏览: 96
好的,以下是C语言实现万年历的代码:
```
#include <stdio.h>
int main()
{
int year, month, day, week, days_in_month, i, j;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
// 判断输入的年份和月份是否合法
if (year < 1900 || month < 1 || month > 12)
{
printf("输入的年份或月份不合法!\n");
return 0;
}
// 计算这个月有多少天
if (month == 2)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
days_in_month = 29;
}
else
{
days_in_month = 28;
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
days_in_month = 30;
}
else
{
days_in_month = 31;
}
// 计算这个月的第一天是星期几
week = 1;
for (i = 1900; i < year; i++)
{
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
{
week += 366 % 7;
}
else
{
week += 365 % 7;
}
}
for (j = 1; j < month; j++)
{
if (j == 2)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
week += 29 % 7;
}
else
{
week += 28 % 7;
}
}
else if (j == 4 || j == 6 || j == 9 || j == 11)
{
week += 30 % 7;
}
else
{
week += 31 % 7;
}
}
week %= 7;
// 输出日历
printf("日 一 二 三 四 五 六\n");
for (i = 0; i < week; i++)
{
printf(" ");
}
for (i = 1; i <= days_in_month; i++)
{
printf("%2d ", i);
if ((i + week) % 7 == 0)
{
printf("\n");
}
}
if ((i + week - 1) % 7 != 0)
{
printf("\n");
}
return 0;
}
```
希望能帮到你!
阅读全文