C语言编程问题,如何判断是否为闰年?

问题描述:
由用户输入若干年份,最后会附加一个 0 作为输入结束标志,程序输出这些年份中的闰年。
输入:由空格分隔的若干整数(表示年份,范围[-3000, 3000]),最后一个是 0 输出:由空格分隔的若干整数(闰年年份)
示例一 [输入] 1900 1990 1991 1992 1993 1994 1995 1996 1997 1998 2000 0 [输出] 1992 1996 2000

我编的程序:
#include<stdio.h>void main(){ int n; while (n!=0) { scanf("%d",&n); if(n%4==0) { printf("%d",n); } else { continue; } }}
输出是这个,哪里出问题了啊?

闰年的判断规则为,4年一闰,百年不闰,四百年再闰。

对于任意的年份值year,写成C语言的判断格式为

year%400 == 0 || (year %4 == 0 && year %100 != 0)

只要符合这个条件的year值,均为闰年。

封装成函数可以写作:

int is_leap_year(int year)
{
    return year%400 == 0 || (year %4 == 0 && year %100 != 0);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-30

要用单分支做,所以判断条件复杂了点。纯手打,希望你看得懂。

#include<stdio.h>

void main()

{

int year;

printf("Enter Year:");

scanf("%d",&year);

if((year%100==0&&year%400==0)||(year%100!=0&&year%4==0))

printf("It is leap year");

else

printf("It is common year");

getch();

}

本回答被网友采纳
第2个回答  2019-06-03

你可以根据闰年的定义,编写以下代码:

#include <stdio.h>
int main()
{
    int a[10]; // 定义长度为10的数组,用于存放用户输入的年份
    for(int i = 0;i < 10;i++)
    {
        scanf("%d",&a[i]);
    } // 用for循环读入输入的10个年份
    for(int x = 0;x < 10;x++)
    {
        if(a[x] % 4 == 0 && a[x] % 100 != 0 || a[x] % 400 == 0)
            printf("%d  ",a[x]);
    } // 逐个检查数组中的年份,如满足闰年的条件则将其输出
    return 0;
}

第3个回答  2014-11-08
#include<stdio.h>
void main()
{
int n;
while (1) //n没赋值前,无法判断
{
scanf("%d",&n);
if ( n==0 ) //输入0结束
break;
if(n%4==0 && n%100!=0 || n%400==0) //闰年检查四年一闰,百年去一,四百年再闰
{
printf("%d ",n); //加个空格
}
}
printf("\n");
}

第4个回答  2014-11-08
#include<stdio.h>
int main(void)
{
int n;
while (scanf("%d",&n),n!=0)
{
if(n%4==0&&n%100!=0||n%400==0) //判断是否为闰年
{
printf("%d ",n);
}
else
{
continue;
}
}
return 0;
}本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网