求 一个 是闰年返回值为1,不是的话返回值为0的函数,计算从2001年起到2999年,哪年是润年的函数的c语言程序。
%./a.out
2001 leap=0
2002 leap=0
2003 leap=0
2004 leap=1
...
2999 leap=0
242个闰年
%
并且利用这个函数算从今天开始10000天之前是几年几月几日
不胜感激。。
#include<stdio.h>
#pragma warning (disable:4996)
int runnian(int n)
{
if (((n%100!=0) && (n%4==0)) || ( n % 400==0) )
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i = 0;
int t = 0;
printf("请输入一个年份:");
scanf("%d", &i);
t =runnian(i);
if (t == 1)
{
printf("%d 是闰年\n", i);
}
else
{
printf("%d 不是闰年\n", i);
}
return 0;
}
判断标准为
1、能整除4且不能整除100。
2、能整除400。
缘由
1、产生闰年原因:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。
2、上面算法又有了一个问题,就是0.2422*4=0.9688,比一天还差0.0322天,每4年差0.0322天不算多,但每400年就会差了约3天。即是说,假如每4年一个闰年,那么每400年就会有100个闰年,然后会多算了3天。
所以,就规定了每四百年中要减少三个闰年。公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年。
闰年就是能被4整除不能被100整除或者能被400整除的年份,可以使用if语句判断:((year%4==0&&year%100!=0)||year%400==0)。
参考代码:
#include "stdio.h"