万年历c语言编程代码
时间: 2023-08-06 10:14:04 浏览: 247
C语言程序万年历源代码
以下是一个简单的万年历C语言编程代码,可以根据输入的年份和月份输出该月份的日历:
```c
#include <stdio.h>
int main()
{
int year, month, days, i, j, k;
printf("请输入年份和月份:");
scanf("%d%d", &year, &month);
printf(" %d月 %d年\n", month, year);
printf(" 日 一 二 三 四 五 六\n");
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;
}
for (i = 1; i <= days; i++)
{
if (i == 1) // 输出第一行前面的空格
{
for (j = 1; j <= (getWeekday(year, month, 1) + 7) % 7; j++)
{
printf(" ");
}
}
printf("%2d ", i);
if ((getWeekday(year, month, i) + 1) % 7 == 0) // 每周的最后一天换行
{
printf("\n");
}
}
if ((getWeekday(year, month, days) + 1) % 7 != 0) // 输出最后一行后面的空格
{
for (k = 1; k <= 7 - (getWeekday(year, month, days) + 1) % 7; k++)
{
printf(" ");
}
}
return 0;
}
int getWeekday(int year, int month, int day)
{
if (month == 1 || month == 2)
{
month += 12;
year--;
}
int c = year / 100;
year %= 100;
int y = year;
int m = month;
int d = day;
int w = (y + y / 4 + c / 4 - 2 * c + 26 * (m + 1) / 10 + d - 1) % 7;
if (w < 0)
{
w += 7;
}
return w;
}
```
这个代码中,`getWeekday()` 函数根据输入的年月日计算出当天是星期几,然后在输出日历时根据这个函数的返回值来确定日期的位置。
阅读全文