闰年是公历中的名词,闰年分为普通闰年和世纪闰年。闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,那么闰年和平年的判断方法有哪些
计算
1、普通闰年:公历年份是4的倍数的,且不是100的倍数,为普通闰年(如2004年、2020年就是闰年)。世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
2、对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)(此按一回归年365天5h48'45.5''计算)。
口诀记法
1、口诀1:4年1闰,400年97闰,3200年(97*8-1)闰,86400年(27*(97*8-1)+1)闰(20926闰)口诀2:4年1闰,128年31闰,86400年(675*31+1)闰(20926闰)四年一闰,百年不闰,四百年再闰。例如:2000年是闰年,2100年则是平年。
程序计算
1、WPS表格:=OR(AND(MOD(YEAR(单元格),4)=0,MOD(YEAR(单元格),100)<>0),MOD(YEAR(单元格),400)=0)Ecmascript语言:
2、Ecmascript语言://判断指定年份是否为闰年functionisleap(){varthe_year=newDate().getFullYear();varisleap=(the_year%4==0&&the_year%100!=0)||(the_year%400==0&&year%3200!=0)||year%172800==0;returnisleap;}
3、C#语言: ///<summary>///判断指定年份是否为闰年///</summary>///<paramname="year">年份</param>///<returns>返回布尔值true为闰年,反之不是</returns>publicstaticboolisLeapYear(intyear){return((year%4==0&&year%100!=0)||(year%400==0&&year%3200!=0)||year%172800==0);}
4、Java语言:importjava.util.Scanner;publicclassLeapYear{publicstatic即枢潋雳voidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("请输入年份:");intyear=input.nextInt();if((year%4==0&&year%100!=0)||(year%400==0&&year%3200!=0)||year%172800==0)System.out.print(year+"年是闰年。");elseSystem.out.print(year+"年不是闰年。");}}
5、VB语言:PrivateSubCommand1_Click()DimaAsIntegera=InputBox("请输入待判断年份")If(aMod4=0AndaMod100<>0)Or(aMod400=0AndaMod3200<>0)Or(aMod172800=0)ThenMsgBox"是闰年!"ElseMsgBox"不是闰年!"EndIfEndSub
6、Python 语言:#-*-coding:cp936-*-temp=input("输入年份:")YEAR=int(temp)if(YEAR%4==0andYEAR%100!=0)or(YEAR%400==0andYEAR%3200!=0)oryear%172800==0:print("闰年")else:print("非闰年")
7、C++语言:#include<io衡痕贤伎stream>intmain(){intyear;std::cout<<"请输入年份:";std::cin>>year;//输入待判断年份,如2008std::cout<<year<<(((year%4==0&&year%100!=0)||(year%400==0&&year%3200!=0)||year%172800==0))==1?"年是闰年":"年是平年")<<std::endl;return0;}
8、scheme语言:(define(闰年?年份)(define(整除?xy)(=0(modxy)))(cond((or(and(整除?年份4)(not(整除?年份100)))(and(整除?年份400)(not(整除?年份3200)))(整除?年份172800))#t)(else#f)))
9、C语言:#include<stdio.h>intmain(void){inty;printf("请输入年份,回车结束\n");scanf("%d",&y);if((y%4==0&&y%100!=0)||(y%400==0&&y%3200!=0)||y%172800==0)printf("%d是闰年\n",y);elseprintf("%d是平年\n",y);return0;}
10、MATLAB语言:functionlpflag=isleapyear(year)%判断是否为闰年%Input-year年份,数值%Output-lpflaglpflag=1,闰年;lpflag=0,平年lpflag=(~mod(year,4)&&mod(year,100))||(~mod(year,400)&&mod(year,3200))||~mod(year,172800);
11、Erlang语言:-module(year).-export([isLeap/1]).isLeap(Year)->ifYearrem3200/=0andYearrem400==0->true;Yearrem100/=0andYearrem4==0->true;Yearrem172800==0->true;true->falseend.
12、Bash/Shell:year=$1i酆璁冻嘌f["$(($year%4))"=="0&鳎溻趄酃quot;]&&["$(($year%100))"!="0"]||["$(($year%400))"=="0"]&&["$(($year%3200))"!="0"]||["$(($year%172800))"=="0"]thenecho"leapyear"elseecho"commonyear"fi
13、易语言:.局部变量年份,整数型'是否是闰年.如果真((年份%4=0且年份%100≠0)或(年份%400=0且年份%3200≠0)或年份%172800=0)信息框(“是闰年!”,0,,)
14、Go语言://IsLeapYear检查传入的年份是否是闰年funcIsLeapYear(yearint)bool{if(year%4==0&&year%100!=0)||(year%400==0&&year%3200!=0)||year%172800==0{returntrue}returnfalse}
15、JavaScript语言:functionisLeapYear(year){if((year/4==Math.floor(year/4)&&year/100!=Math.floor(year/100))||(year/400==Math.floor(year/400)&&year/3200!=Math.floor(year/3200))||year/172800==Math.floor(year/172800)){returntrue}returnfalse