C语言,输入一年中的年月日判读是一年中的第几天练习,运行的时候多出了一条C语言格式输入函数,刚学习C语言不懂原因。

C语言,输入一年中的年月日判读是一年中的第几天练习,运行的时候多出了一条C语言格式输入函数,刚学习C语言不懂原因,请教。

img

把第八行改成
scanf("%d%d%d", &year, &month, &day);
去掉空格看看

【以下回答由 GPT 生成】

我看到你的代码中存在一个多余的输入函数,导致程序运行时会要求输入多余的内容。这个问题可能是由于输入缓冲区中残留的换行符引起的。为了解决这个问题,你可以在每次输入之前清空输入缓冲区。你可以通过以下两种方法中的一种来解决这个问题:

方法1: 使用getchar函数清空输入缓冲区

在每次输入之前,使用一个while循环来清空输入缓冲区中的所有字符,直到遇到换行符为止。代码如下所示:

int c;
while ((c = getchar()) != '\n' && c != EOF) {}

将上述代码添加到需要清空输入缓冲区的位置。

方法2: 使用fgets函数接收输入

使用fgets函数来接收输入,并使用sscanf函数解析输入的数据。这样可以避免使用scanf函数时产生的输入缓冲区问题。代码如下所示:

#include <stdio.h>

int main() {
    int year, month, day;
    int buf[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int sum = 0;
    char input[256];

    printf("请输入年份:");
    fgets(input, sizeof(input), stdin);
    sscanf(input, "%d", &year);

    printf("请输入月份:");
    fgets(input, sizeof(input), stdin);
    sscanf(input, "%d", &month);

    printf("请输入日期:");
    fgets(input, sizeof(input), stdin);
    sscanf(input, "%d", &day);

    // 其他代码

    printf("这是一年中的第%d天。\n", sum);

    return 0;
}

你可以根据需要选择其中一种方法来解决你的问题。希望对你有所帮助。如果还有其他问题,请随时提问。



【相关推荐】



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