Fortran循环输出问题

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

才能输出全

在这里插入图片描述
不知道为啥出现*号呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值