判断某年为闰年 ,输入只有一行,包含一个整数a(0<a<3000),如果公元a年是闰年则输出Y,否则输出N

img

求个大佬告诉我哪里错了

1、你这个里面的else只对应第二个if,也就是说只有当第二个if 不成立时才会执行else和第一个if无关
2、题目中对a有限制要求。
修改方案一:你可以把第二个if换为if else,并别忘了加上a的范围
方案二:可以看看我的
#include <stdio.h>

int main() {
int year;
printf("输入:");
scanf("%d", &year);
if (year > 0 && year < 3000) {
if (year % 4 == 0) {
if (year % 100 == 0 && year % 400 != 0) {
printf("N");
}
else {
printf("Y");
}
}
else {
printf("N");
}
}
return 0;
}

供参考:

#include <stdio.h>
int main()
{
    int y;
    scanf("%d", &y);
    if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
        printf("Y");
    else 
        printf("N");
    return 0;
}

更简洁的写法:

#include <stdio.h>
int main()
{
    int y;
    scanf("%d", &y);
    printf((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0) ? "Y" : "N");
    return 0;
}