提问关于C语言的问题

编写程序,输入年份和月份,输出该月的月历。输入格式:在一行中输入年和月.年范围为(正整数),月(1~12)。输出格式:输出该月的月历。每日的输出字符宽度为8,每行每日之间不再设间距,右对齐.所有空白部分均填充为空格字符.注意月份最后的哪个日期后面没有多余空格和换行符。

参考GPT和自己的思路:

好的,这是一个比较典型的计算机编程问题,需要使用C语言来实现。下面是一个可能的解法:

#include <stdio.h>

int main()
{
    int year, month;

    // 读入年份和月份
    printf("请输入年份和月份,以空格分隔:\n");
    scanf("%d%d", &year, &month);

    // 计算该月的天数
    int days_in_month;
    if (month == 2) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            days_in_month = 29;
        } else {
            days_in_month = 28;
        }
    } else if (month == 4 || month == 6 || month == 9 || month == 11) {
        days_in_month = 30;
    } else {
        days_in_month = 31;
    }

    // 输出月历
    printf("日 一 二 三 四 五 六\n"); // 先输出星期几的标头
    int i, j, k;
    for (i = 1; i <= days_in_month;) {
        for (j = 0; j < 7 && i <= days_in_month; ++j, ++i) {
            printf("%*d ", 8, i); // 输出每一天,宽度为8,右对齐
        }
        printf("\n");
    }

    return 0;
}

这个程序包含三个部分:

  1. 读入年份和月份。

  2. 根据输入的年份和月份计算该月的天数。

    这里用到了一个比较经典的判断闰年的方法:能被4整除但不能被100整除,或者能被400整除。如果是2月份,则根据是否是闰年来决定天数。

  3. 输出月历。

    这里先输出星期几的标头,然后使用两个循环来输出每一行的日期。内层循环输出每个日期,宽度为8,右对齐。外层循环负责控制换行和停止输出。

希望这个解法能够令您满意!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^