用C语言创建日历

用C语言创建日历,c,calendar,C,Calendar,我知道我的代码很接近,但不太有效 它应该包括日历开始的星期几和月份的天数 我能得到帮助吗 int main(void) { int start_day, days_in_month, i, day_of_week; printf("Enter start day: "); scanf("%d", &start_day); printf("Enter days in month: "); scanf("%d", &days_in_mont

我知道我的代码很接近,但不太有效

它应该包括日历开始的星期几和月份的天数

我能得到帮助吗

int main(void)
{
    int start_day, days_in_month, i, day_of_week;

    printf("Enter start day: ");
    scanf("%d", &start_day);

    printf("Enter days in month: ");
    scanf("%d", &days_in_month);

    for (i = 1 ; i < start_day; i++) {
        printf("   ");
    }

    for (i = 1; i <= days_in_month; i++) {
        printf("%2d ", i);
        if ((i + start_day - 1) % 7 == 0) {
            printf("\n");
        }
    }
    return 0;
}

我可以看到一些小问题:

您应该添加include 您不应该定义一周中的第天,因为您不使用它。 您可能希望避免在每行末尾打印空格。 如果最后一行不完整,则应在日历后输出额外的换行符。 您应该测试scanf的返回值,如果没有输入数字,则中止,以避免未定义的行为。 以下是更正的版本:

#include <stdio.h>

int main(void) {
    int start_day, days_in_month, i;

    printf("Enter start day: ");
    if (scanf("%d", &start_day) != 1)
        return 1;

    printf("Enter days in month: ");
    if (scanf("%d", &days_in_month) != 1)
        return 1;

    for (i = 1; i < start_day; i++) {
        printf("   ");
    }

    for (i = 1; i <= days_in_month; i++) {
        printf("%2d", i);
        if ((i + start_day - 1) % 7 == 0) {
            printf("\n");
        } else {
            printf(" ");
        }
    }
    if ((days_in_month + start_day - 1) % 7 != 0) {
        printf("\n");
    }
    return 0;
}

纠正什么?请说得具体一点,不要说不太管用。具体来说,请告诉我们测试输入、预期输出和实际输出。对我来说很有用。不确定你认为它有什么问题。