c++实现万年历,用户只用输入年份,就可以输出这一年的年历。要求:利用循环方法产生年历数据,使用数据缓冲区存储和输出,将缓冲区看作一个二维平面,设计年历坐标系 ,按坐标填入星期表头,计算每天的坐标,填入日期内容,最后一起输出。 将一个月作为一个子程序,循环调用月内按天循环,事先存储每个月的天数
时间: 2023-10-16 07:09:01 浏览: 110
C++ 实现万年历功能
5星 · 资源好评率100%
以下是一个基于C++的万年历程序,满足您的要求:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
// 判断是否为闰年
bool isLeapYear(int year) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
return true;
return false;
}
// 返回一年中一个月的天数
int getDaysOfMonth(int year, int month) {
int days[] = {31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
return days[month - 1];
}
// 输出月历
void printMonth(int year, int month, int& weekDay) {
int daysOfMonth = getDaysOfMonth(year, month);
cout << setw(26) << year << "年" << setw(3) << month << "月" << endl;
cout << " 日 一 二 三 四 五 六" << endl;
for (int i = 0; i < weekDay; i++)
cout << " ";
for (int i = 1; i <= daysOfMonth; i++) {
cout << setw(2) << i << " ";
weekDay++;
if (weekDay == 7) {
cout << endl;
weekDay = 0;
}
}
if (weekDay != 0)
cout << endl;
cout << endl;
}
int main() {
int year, weekDay = 0;
cout << "请输入年份:";
cin >> year;
for (int i = 1; i <= 12; i++) {
printMonth(year, i, weekDay);
}
return 0;
}
```
程序中定义了两个辅助函数,`isLeapYear`用于判断是否为闰年,`getDaysOfMonth`用于返回一个月的天数。`printMonth`函数用于输出一个月的日历,其中`weekDay`表示该月第一天是星期几。
在`main`函数中,先读入年份,然后循环输出每个月的日历。在循环中,每次调用`printMonth`函数,将`weekDay`作为参数传入,用于确定该月第一天是星期几。
阅读全文