用Fortran写:键入在2000-2200年之间的人的出生和死亡日期,计算他经历过多少个2月29日、多少个闰年,输出到文件‘2023.dat’中,要有中文说明
时间: 2024-03-03 10:48:39 浏览: 95
非常感谢您的问题!以下是用Fortran语言编写的程序:
```fortran
program leap_years
implicit none
integer :: i, birth_year, death_year, num_leap_years, num_feb_29
logical :: is_leap_year
open(unit=10, file='2023.dat', status='replace')
write(10,*) '计算人的出生和死亡日期之间经历的闰年和2月29日个数'
write(10,*)
write(10,*) '请输入出生年份:'
read(*,*) birth_year
write(10,*) '请输入死亡年份:'
read(*,*) death_year
write(10,*)
num_leap_years = 0
num_feb_29 = 0
do i = birth_year, death_year
is_leap_year = (mod(i, 4) == 0 .and. (mod(i, 100) /= 0 .or. mod(i, 400) == 0))
if (is_leap_year) then
num_leap_years = num_leap_years + 1
num_feb_29 = num_feb_29 + 1
end if
if (i == birth_year) then
! 出生年份当年的2月29日
if (is_leap_year) then
write(10,*) '出生年份为闰年,2月29日存在'
else
write(10,*) '出生年份不是闰年,2月29日不存在'
end if
else if (i == death_year) then
! 死亡年份当年的2月29日
if (is_leap_year) then
write(10,*) '死亡年份为闰年,2月29日存在'
else
write(10,*) '死亡年份不是闰年,2月29日不存在'
end if
else
! 其他年份的2月29日
if (is_leap_year) then
num_feb_29 = num_feb_29 + 1
end if
end if
end do
write(10,*)
write(10,*) '出生年份:', birth_year
write(10,*) '死亡年份:', death_year
write(10,*)
write(10,*) '经历的闰年个数:', num_leap_years
write(10,*) '经历的2月29日个数:', num_feb_29
close(10)
end program leap_years
```
您可以将上述代码保存到一个名为 `leap_years.f90` 的文件中,然后使用以下命令进行编译:
```
gfortran leap_years.f90 -o leap_years
```
运行程序:
```
./leap_years
```
程序将提示您输入出生年份和死亡年份,然后计算并输出经历的闰年个数和2月29日个数,并将结果写入文件 `2023.dat` 中。
希望这个程序能够帮助到您!
阅读全文