do iyear=2007,2008
write(cyear,'(I4.4)')iyear
do imonth=1,12
write(cmonth,'(I2.2)')imonth
if(imonth==1.or.imonth==3.or.imonth==5.or.imonth==7.or. &
& imonth==8.or.imonth==10.or.imonth==12)then
days=31
write(cday,'(I2.2)')iday
print*,cyear//'-'//cmonth//'-'//cday
else if(imonth==4.or.imonth==6.or.imonth==9.or. &
& imonth==11) then
days=30
write(cday,'(I2.2)')iday
print*,cyear//'-'//cmonth//'-'//cday
else if(imonth==2)then
if((mod(iyear,4)==0.and.mod(iyear,100)/=0).or.&
& ( mod(iyear,400)==0))then
days=29
write(cday,'(I2.2)')iday
print*,cyear//'-'//cmonth//'-'//cday
else
days=28
write(cday,'(I2.2)')iday
print*,cyear//'-'//cmonth//'-'//cday
end if
end if
end do
end do
当我把print输出放在里面的时候,输出如下结果
正确的做法是要把输出print提出来,再另用一个days去表示原来的iday
代码如下
do iyear=2007,2008
write(cyear,'(I4.4)')iyear
do imonth=1,12
write(cmonth,'(I2.2)')imonth
if(imonth==1.or.imonth==3.or.imonth==5.or.imonth==7.or. &
& imonth==8.or.imonth==10.or.imonth==12)then
days=31
else if(imonth==4.or.imonth==6.or.imonth==9.or. &
& imonth==11) then
days=30
else if(imonth==2)then
if((mod(iyear,4)==0.and.mod(iyear,100)/=0).or.&
& ( mod(iyear,400)==0))then
days=29
else
days=28
end if
end if
do iday=1,days
write(cday,'(I2.2)')iday
print*,cyear//'-'//cmonth//'-'//cday
end do
end do
end do
才能输出全
不知道为啥出现*号呀