右图为1月份的月历图,第一行表示星期日到星期六,每个字母之间间隔4个空格。请输入月份m,按以下格式打印2020年第m月的月历。 要求:使用cout格式化输出。
时间: 2024-09-28 07:09:58 浏览: 31
这是一个编程问题,通常会在控制台输出一个指定月份的月历。你可以用C++编写一个函数来生成。假设我们使用了`#include <ctime>`库来获取当前年份和月份,然后使用`strftime()`函数格式化日期。下面是简单的C++代码示例:
```cpp
#include <iostream>
#include <ctime>
// 函数用于打印指定月份的日历
void printCalendar(int m) {
time_t now = time(0); // 获取当前时间
struct tm* today = localtime(&now); // 转换为本地时间结构
// 将今年的1月1日调整为指定月份
today->tm_mon = m - 1; // 因为C语言的月份从0开始计数
mktime(today); // 设置完整的日期
// 输出月历
std::cout << "2020年" << today->tm_year + 1900 << "/" << (today->tm_mon + 1) << "/\t";
std::cout << "Su Mo Tu We Th Fr Sa\n";
// 使用strftime格式化输出每一天
for (int day = 1; day <= 7; ++day) {
std::ostringstream oss;
oss << day;
std::string date = oss.str();
if (day == today->tm_wday + 1) { // 当天是星期几
std::cout << date << "\t";
} else {
std::cout << " \t"; // 显示空格
}
if ((day % 7) == 0) {
std::cout << "\n";
}
}
std::cout << std::endl;
}
int main() {
int m;
std::cout << "请输入月份(m): ";
std::cin >> m;
printCalendar(m);
return 0;
}
```
在这个例子中,用户需要输入月份`m`,程序会输出对应月份的月历。注意,由于是固定年份2020年的数据,如果输入的月份超过实际的2020年范围,可能会出现问题。
阅读全文