用C++编写万年历系统,若输入年份,输出这一年的日历,若输入年份和月份,则输出这个月的月历,已知1980年1月1日为星期二
时间: 2023-05-19 16:04:51 浏览: 239
以下是用C编写的万年历系统的代码:
```
#include <stdio.h>
int main()
{
int year, month, day, week, days_in_month, i, j;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
// 计算这一年的第一天是星期几
week = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + 1) % 7;
// 计算这个月有多少天
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;
}
// 输出日历或月历
if (month == 0)
{
printf(" %d年\n", year);
for (i = 1; i <= 12; i++)
{
printf(" %d月\n", i);
printf("日 一 二 三 四 五 六\n");
// 输出第一天之前的空格
for (j = 0; j < week; j++)
{
printf(" ");
}
// 输出这个月的日期
for (j = 1; j <= days_in_month; j++)
{
printf("%2d ", j);
week++;
if (week == 7)
{
printf("\n");
week = 0;
}
}
// 输出最后一天之后的空格
for (j = week; j < 7; j++)
{
printf(" ");
}
printf("\n");
}
}
else
{
printf(" %d年%d月\n", year, month);
printf("日 一 二 三 四 五 六\n");
// 输出第一天之前的空格
for (j = 0; j < week; j++)
{
printf(" ");
}
// 输出这个月的日期
for (j = 1; j <= days_in_month; j++)
{
printf("%2d ", j);
week++;
if (week == 7)
{
printf("\n");
week = 0;
}
}
// 输出最后一天之后的空格
for (j = week; j < 7; j++)
{
printf(" ");
}
printf("\n");
}
return 0;
}
```
如果输入年份,则会输出这一年的日历;如果输入年份和月份,则会输出这个月的月历。已知1980年1月1日为星期二,程序会自动计算出这一年的第一天是星期几,并根据这个信息输出日历或月历。
请注意,这个程序只能处理公历,不能处理农历。如果需要处理农历,需要使用其它算法。
阅读全文
相关推荐
















