万年历c++
时间: 2023-06-29 10:19:48 浏览: 87
以下是一个简单的 C++ 万年历程序,可以输入年份和月份,输出该月份的日历:
```
#include <iostream>
using namespace std;
// 判断是否是闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 获取某年某月的天数
int getDaysOfMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
// 获取某年某月第一天是星期几
int getFirstDayOfWeek(int year, int month) {
int y = year;
int m = month;
if (m == 1 || m == 2) {
m += 12;
y--;
}
int d = 1;
int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
return w;
}
// 输出日历
void printCalendar(int year, int month) {
cout << " " << year << "年" << month << "月" << endl;
cout << "日 一 二 三 四 五 六" << endl;
int firstDayOfWeek = getFirstDayOfWeek(year, month);
int daysOfMonth = getDaysOfMonth(year, month);
int day = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (i == 0 && j < firstDayOfWeek) {
cout << " ";
} else if (day > daysOfMonth) {
break;
} else {
printf("%2d ", day++);
}
}
cout << endl;
if (day > daysOfMonth) {
break;
}
}
cout << endl;
}
int main() {
int year, month;
cout << "请输入年份和月份:" << endl;
cin >> year >> month;
printCalendar(year, month);
return 0;
}
```
注意:这只是一个简单的实现,还有很多细节需要考虑,比如输入的年份和月份是否合法,输出的格式是否美观等等。
阅读全文