您的位置首页  散文随感

居然可以这样闰年的判断方法(java闰年的判断方法)

implicit none character::rq integer::yy,mm,ddend program test25

居然可以这样闰年的判断方法(java闰年的判断方法)

 

今天的作业是通过输入一个日期,判断该日期是此年的第几天看到这个题目,我第一时间就想到了C#的DayOfYear方法和JAVA的Getdayofyear方法C#实现:是不是特别简单DateTime tt="2020-04-17";。

int days=tt.DayOfYear;可是Fortran没有这个方法,要判断天数还是有点难度,那我们应该如何实现呢?首先,定义一个一维数组,包含每个月的天数(先按平年处理二月天数)integer::dayofmonth(12)=[31,28,31,30,31,30,31,31,30,31,30,31]。

Fortran中数组的下标是从1开始,这一点与C#、JAVA从0开始的不一样第二步,需要判断输入的年份是否为闰年判断闰年的方法是能被4整除同时不能被100整除或者能被400整除即“四年一闰,百年不闰,四百又闰”。

当判断是闰年时将数组中2月的天数改为29dayofmonth(2)=29 !下标是2第三步,通过输入的月份将数组中前几个月的天数汇总,再加上输入的日子比如:输入的是“20200417”,先判断2020是否闰年,结果是闰年,则将数组中2月份天数改为29。

输入的是04月,则将1月、2月、3月天数汇总得到91,再加上输入的日子17,最后结果是108,即得到结果:输入日期是该年的108天完整代码如下:program test25 implicit none character(len=

8)::rq integer::yy,mm,dd integer::days=0 integer::dayofmonth(12)=[31,28,31,30,31,30,31,31

,30,31,30,31] !定义每月天数的数组 write(*,*)"输入一个日期(YYYYMMDD):"read(*,*)rq ! 取输入年,月,日 read(rq(1:4)

,*)yy read(rq(5:6),*)mm read(rq(7:8),*)dd if(((MOD(yy,4)==0).and.(MOD(yy,100)/=0)).or.(mod(yy,

400)==0)) then !判断是否为闰年 dayofmonth(2)=29write(*,*)"此年是闰年!"else dayofmonth(2)=28write

(*,*)"此年是平年!" end if ! 输入日期的前几个月日数加本月日期 days=sum(dayofmonth(1:mm-1))+dd !数组的前几个月天数加上本月天数

write(*,100)days 100format("此日期是当年的:",I3,"天") pause stop end program test25运行代码,结果如下图。

Fortran语言还是挺好玩的,虽然不是面向对象,可理解起来还是很容易。虽然很小众,但速度和效率还是很强大。尤其是对数值计算的功能较强,值得学生和科研人员好好学习。

Fortran我也是初学,好久不写代码了,欢迎朋友们指正。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186