fortran 输入年份判断是否为闰年
时间: 2024-06-15 11:05:02 浏览: 207
Fortran是一种编程语言,可以用来编写科学计算和数值分析的程序。下面是一个Fortran程序示例,用于判断输入的年份是否为闰年:
```fortran
program leap_year
implicit none
integer :: year
! 从用户输入获取年份
write(*,*) "请输入一个年份:"
read(*,*) year
! 判断是否为闰年
if (mod(year, 4) == 0) then
if (mod(year, 100) /= 0 .or. mod(year, 400) == 0) then
write(*,*) year, "是闰年"
else
write(*,*) year, "不是闰年"
end if
else
write(*,*) year, "不是闰年"
end if
end program leap_year
```
上述程序首先会要求用户输入一个年份,然后通过使用`mod`函数来判断该年份是否为闰年。如果能被4整除但不能被100整除,或者能被400整除,则判断为闰年。
相关问题
用fortran语言编写:输入某一年年份year,判断它是否为闰年(Leap)。判断依据为:(1)year能被4整除,但又不能被100整除的年份都是闰年;(2)year能被100整除,且能被400整除的年份是闰年。
以下是用Fortran语言编写的程序,可以判断输入的年份是否为闰年:
```
program leap_year
implicit none
integer :: year, flag
write(*,*) "请输入一个年份:"
read(*,*) year
flag = 0
if (mod(year, 4) == 0) then
flag = 1
if (mod(year, 100) == 0) then
flag = 0
if (mod(year, 400) == 0) then
flag = 1
endif
endif
endif
if (flag == 1) then
write(*,*) year, "是闰年"
else
write(*,*) year, "不是闰年"
endif
end program leap_year
```
在程序中,首先通过 `read` 语句获取用户输入的年份值,并将其存储在整型变量 `year` 中。然后,通过 `mod` 函数判断该年份是否能被4整除,如果可以,则将标志变量 `flag` 的值设为1。接着,再判断该年份是否能被100整除,如果可以,则将 `flag` 的值设为0,但如果能同时被400整除,则将 `flag` 的值重新设为1。最后,根据 `flag` 的值输出判断结果。
用Fortran写:键入在2000-2200年之间的人的出生和死亡具体日期,计算他经历过多少个2月29日、多少个闰年,输出到文件‘2023.dat’中,要有中文说明
您好,以下是使用Fortran语言编写的程序:
```
program count_leap_years
implicit none
integer :: birth_year, birth_month, birth_day, death_year, death_month, death_day
integer :: num_leap_years, num_feb_29s, i, year, feb_days
character(len=20) :: output_file
logical :: is_leap_year
! 获取出生和死亡日期
write(*, "(A)", advance="no") "请输入出生日期(格式:YYYY MM DD):"
read(*, *) birth_year, birth_month, birth_day
write(*, "(A)", advance="no") "请输入死亡日期(格式:YYYY MM DD):"
read(*, *) death_year, death_month, death_day
! 计算经历过的闰年和2月29日的个数
num_leap_years = 0
num_feb_29s = 0
do year = birth_year, death_year
! 判断是否为闰年
is_leap_year = (mod(year, 4) == 0 .and. (mod(year, 100) /= 0 .or. mod(year, 400) == 0))
! 统计闰年个数
if (is_leap_year) then
num_leap_years = num_leap_years + 1
end if
! 统计2月29日的个数
if (is_leap_year) then
feb_days = 29
else
feb_days = 28
end if
if (year == birth_year) then
do i = birth_month, 12
if (i == 2 .and. birth_day == 29) then
num_feb_29s = num_feb_29s + 1
end if
end do
else if (year == death_year) then
do i = 1, death_month
if (i == 2 .and. death_day >= 29) then
num_feb_29s = num_feb_29s + 1
end if
end do
else
do i = 1, 12
if (i == 2) then
num_feb_29s = num_feb_29s + 1
end if
end do
end if
end do
! 输出结果到文件
output_file = "2023.dat"
open(unit=10, file=output_file, status="replace")
write(10, "(A,I0)", advance="no") "经历过的闰年个数:", num_leap_years
write(10, "(A,I0)", advance="no") "经历过的2月29日个数:", num_feb_29s
close(10)
! 输出结果到屏幕
write(*, "(A,I0)") "经历过的闰年个数:", num_leap_years
write(*, "(A,I0)") "经历过的2月29日个数:", num_feb_29s
end program count_leap_years
```
程序中会提示用户输入出生日期和死亡日期,然后计算经历过的闰年个数和2月29日的个数,并将结果输出到文件`2023.dat`中。程序中使用了中文注释和中文输出,以方便理解。
注意,程序中的日期格式为`YYYY MM DD`,其中`YYYY`表示年份,`MM`表示月份,`DD`表示日期。如果您需要修改日期格式,请相应地修改程序中的读取和处理日期的部分。
阅读全文