c语言设计一个万年历
时间: 2024-04-21 15:18:44 浏览: 104
以下是一个用C语言设计的简单万年历程序的示例:
```c
#include <stdio.h>
// 判断是否为闰年
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 获取某年某月的天数
int getDaysOfMonth(int year, int month) {
int days;
if (month == 2) {
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
return days;
}
// 获取某年某月的第一天是星期几
int getFirstDayOfWeek(int year, int month) {
int dayOfWeek;
int totalDays = 0;
for (int i = 1900; i < year; i++) {
totalDays += isLeapYear(i) ? 366 : 365;
}
for (int i = 1; i < month; i++) {
totalDays += getDaysOfMonth(year, i);
}
dayOfWeek = (totalDays + 1) % 7; // 1900年1月1日是星期一,所以要加1
return dayOfWeek;
}
// 打印某年某月的日历
void printCalendar(int year, int month) {
int firstDayOfWeek = getFirstDayOfWeek(year, month);
int daysOfMonth = getDaysOfMonth(year, month);
printf(" %d年%d月\n", year, month);
printf("日 一 二 三 四 五 六\n");
// 打印该月第一天之前的空格
for (int i = 0; i < firstDayOfWeek; i++) {
printf(" ");
}
// 打印该月的日期
for (int i = 1; i <= daysOfMonth; i++) {
printf("%2d ", i);
if ((firstDayOfWeek + i) % 7 == 0) {
printf("\n");
}
}
printf("\n");
}
int main() {
int year, month;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
printCalendar(year, month);
return 0;
}
```
阅读全文