关于c语言的问题,请专家解答

img


怎么打印结果是这样会有这么多额外的数字,请专家解答,本人初学者,

啥功能啊?是算闰年吗?
这个if层次有点问题啊,if(x%400==0)的情况,不能放在前面两个if里面

int IF(int x)
{
    if(x%400 == 0)
        return x;
    if(x%4==0 && x%100 != 0)
        return x;
    return 0;
}
int main()
{
    int a = 1900;
    while(a<=2000)
    {
        if(IF(a) != 0)
            printf("%d\n",a);
        a++;
    }
}


if (IF(a)> 1000)
printf("%d\n",IF(a));
选择性输出

该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据您提供的代码,可能是由于在函数 IF 中打印了额外的数字,导致输出结果不符合预期。

建议您将 IF 函数中的打印语句注释掉,只返回计算出的结果。然后在 main 函数中调用 IF 函数,将返回值作为要打印的结果即可。例如:

#include <stdio.h>
#include <math.h>

int IF(int x);

int main() {
    int a = 1900;
    while (a <= 2000) {
        printf("%d\n", IF(a));
        a = a + 1;
    }
    return 0;
}

int IF(int x) {
    int s;
    if (x % 4 == 0) {
        if (x % 100 == 0) {
            if (x % 400 == 0) {
                s = x;
            } else {
                s = -1;
            }
        } else {
            s = x;
        }
    } else {
        s = -1;
    }
    return s;
}


这样输出的结果就只有符合条件的年份,不会出现额外的数字了。