如何用c++语言制作万年历
时间: 2023-06-13 19:07:37 浏览: 120
制作万年历可以分为两个部分,第一部分是计算日期,第二部分是输出日历。
以下是一个简单的 C++ 代码示例,可以实现万年历功能:
```c++
#include <iostream>
using namespace std;
// 判断是否是闰年
bool isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return true;
}
return false;
}
// 计算一个月的天数
int getDaysOfMonth(int year, int month) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) {
return 29;
}
return days[month - 1];
}
// 计算某一天是星期几
int getDayOfWeek(int year, int month, int day) {
if (month == 1 || month == 2) {
month += 12;
year--;
}
int c = year / 100;
year %= 100;
int week = year + year / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
week = (week % 7 + 7) % 7;
return week;
}
// 输出日历
void printCalendar(int year, int month) {
cout << year << "年" << month << "月" << endl;
cout << "日 一 二 三 四 五 六" << endl;
int daysOfMonth = getDaysOfMonth(year, month);
int dayOfWeek = getDayOfWeek(year, month, 1);
for (int i = 0; i < dayOfWeek; i++) {
cout << " ";
}
for (int i = 1; i <= daysOfMonth; i++) {
printf("%2d ", i);
if ((i + dayOfWeek) % 7 == 0) {
cout << endl;
}
}
if ((daysOfMonth + dayOfWeek) % 7 != 0) {
cout << endl;
}
}
int main() {
int year, month;
cout << "请输入年份:";
cin >> year;
cout << "请输入月份:";
cin >> month;
printCalendar(year, month);
return 0;
}
```
在上面的代码中,`isLeapYear` 函数用于判断是否是闰年,`getDaysOfMonth` 函数用于计算一个月的天数,`getDayOfWeek` 函数用于计算某一天是星期几,`printCalendar` 函数用于输出日历。在 `main` 函数中,先输入年份和月份,然后调用 `printCalendar` 函数输出日历。
阅读全文