2401_83754279 2024-05-21 09:14 采纳率: 89.7%
浏览 48

c语言输入年月打印月历

打印月历:输入年月,输出该月的日历,可以参考年历中月份的格式。

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-21 09:14
    关注

    引自免费微信小程序:皆我百晓生

    为了创建一个C++程序来打印月历,你需要按照以下步骤操作:

    1. 定义函数来计算给定年份和月份的第一天是星期几。
    2. 创建一个二维数组来存储日历的日期。
    3. 打印出月历的标题和日期。

    以下是完整的C++代码实现:

    #include <iostream>
    #include <string>
    
    // 函数声明
    int get_first_day(int year, int month);
    void print_month(const int year, const int month);
    
    int main() {
        int year, month;
        
        std::cout << "Enter the year: ";
        std::cin >> year;
        std::cout << "Enter the month: ";
        std::cin >> month;
    
        print_month(year, month);
    
        return 0;
    }
    
    // 计算给定年份和月份第一天是星期几
    int get_first_day(int year, int month) {
        static const int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int first_day = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) ? 6 : 0; // 判断是否为闰年
        if (month > 1) {
            for (int i = 0; i < month - 1; ++i)
                first_day += days_in_month[i];
        }
        return (first_day + 1) % 7; // 返回的是0到6,分别对应周日到周六
    }
    
    // 打印月历
    void print_month(const int year, const int month) {
        int days_in_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (month == 2 && (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))) {
            days_in_month[1] = 29; // 如果是闰年的二月,增加一天
        }
    
        int first_day = get_first_day(year, month);
        int day_count = 1;
    
        std::cout << std::setw(10) << std::left << month << " " << year << "\n";
        std::cout << "Su Mo Tu We Th Fr Sa\n";
    
        for (int i = 0; i < first_day; ++i) {
            std::cout << "   ";
        }
    
        for (int i = 1; i <= days_in_month[month - 1]; ++i) {
            std::cout << std::setw(2) << std::right << day_count << " ";
            if ((day_count++) % 7 == 0) {
                std::cout << "\n";
            }
        }
    }
    

    这个程序首先会提示用户输入年份和月份,然后调用print_month函数来打印相应的月历。在get_first_day函数中,我们计算了给定年份和月份的第一个日期是星期几。print_month函数则根据这些信息来打印出月历的结构。注意,这里没有处理非法输入的情况,例如无效的年份或月份,你可以根据需要添加错误检查。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月21日