用函数做下面这问题,我的代码有什么问题吗?运行失败,帮我改一下

输入6个整数,请输出其中所有四位数的闰年。即该整数是四位数而且该整数是闰年
#include
int is(int n){int f;if(n%400==0||(n%4==0&&n%100!=0))f=1; else f=0; return f;}main(){int f, n,i;printf("请输入6个数: ");scanf("%d", &n);is(n);for(i=0;i<6;i++)if(is(n)==1) printf("%d是闰年\n",n);}

望采纳,代码存在几个问题:

  • for 循环的条件中,没有用到变量 i。应该改为 for(i = 0; i < 6; i++)。
  • 在 for 循环内,没有读入新的整数。应该在每次循环内部读入一个新的整数。
  • 函数 is 的返回值是布尔类型,但是您的代码中用了整数类型 int 来表示布尔类型的值。可以将函数的返回值改为布尔类型,即 bool 类型。
  • 在 is 函数内部,变量 f 的作用域仅在函数内部,所以应该将其声明在函数内部。

修改后的代码如下:

#include<stdio.h>

bool is(int n) {
    bool f;
    if(n % 400 == 0 || (n % 4 == 0 && n % 100 != 0)) {
        f = 1;
    } else {
        f = 0;
    }
    return f;
}

int main() {
    int n, i;
    printf("请输入6个数: ");
    for(i = 0; i < 6; i++) {
        scanf("%d", &n);
        if(is(n) == 1) {
            printf("%d是闰年\n", n);
        }
    }
    return 0;
}

循环位置不对啊,是循环输入,不是循环判断is(n)

#include<stdio.h>
int is(int n)
{
int f;
if(n%400==0||(n%4==0&&n%100!=0))
    f=1; 
else 
    f=0; 
return f;
}
int main()
{
int n,i;
printf("请输入6个数: ");
for(i=0;i<6;i++)
{
  scanf("%d", &n);
  if(is(n)==1) 
        printf("%d是闰年\n",n);
}
}