写一个C++万年历算法
时间: 2023-06-05 11:04:52 浏览: 78
好的,以下是一个简单的C语言万年历算法示例代码:
#include <stdio.h>
int main()
{
int year, month, day;
int daysArray[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char *weekArray[7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
printf("Please enter the year (e.g. 2022): ");
scanf("%d", &year);
printf("Please enter the month (1-12): ");
scanf("%d", &month);
// 计算该年是否为闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
daysArray[1] = 29; // 闰年二月有29天
}
// 计算该月第一天是星期几(根据基姆拉尔森计算公式)
day = 1;
int week = ((day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7);
printf("\n%s %d:\n", weekArray[week], year);
// 打印万年历
int i, j;
for (i = 0; i < week; i++)
{
printf(" ");
}
for (j = 1; j <= daysArray[month - 1]; j++)
{
printf("%2d ", j);
if ((j + week) % 7 == 0)
{
printf("\n");
}
}
return 0;
}
输入年份和月份后,程序将计算该月的星期排列,并打印出相应的万年历。注意,该代码只是一个简单的例子,实际生产环境中可能需要更加完善的算法和数据验证。