回 帖 发 新 帖 刷新版面

主题:fortran错误提示的解决-unterminated block exists

各位童鞋们,本人刚开始学fortran,问个比较傻的问题哈,编写了一个特别简单的程序,在用do语句的时候,写do 0.25, 6.0, 0.25, 为什么编译后提示unterminated block exists,请教是怎么回事,然后怎么解决呢,希望大侠们帮帮忙哈

回复列表 (共15个回复)

11 楼

N1(t0)=log(N0*exp(-(10**t0)*1.186*10**(-6)))
    N2(t0)=log(N0*7.531*10**(-10)

    NI(t1)=log(exp(-0.1055*10**t1)*1.075*10**16)
    NXe(t1)=log(3.55642*(exp(-0.075837*10**t1)-exp(-0.1055*10**t1))
     &         *1.075*10**16)
这两处都用了实型数做为数组的下标,这个是不对的。
怀疑原本程序t0和t1都是整型,后来被改成了实型。

12 楼


你说的是t0 和t1吗?这个程序是我自己写的呜,我已经改过来了,但是它还是显示“Warning: Overflow occurred while evaluating constant expression.
     &     -exp(-0.1055*10**(t1/100)))*1.075*10**16)”,但是我这个式子的值不是很大,怎么会overflow呢?

13 楼

改成:
 -exp(-0.1055*10.0**(t1/100.0)))*1.075*10.0**16.0)
试试?

14 楼


我的程序还没搞定呜,我改成这样子的了
      program homework2
      real*4 :: N1,N2
    real*4 :: NI,NXe
    integer*4 :: N0=2.26428*10**21
    real*4 :: t0,t1
    do t0=0,600,25
    N1=N0*exp(-exp(t0/100)*1.186e-6)
    N11=log(N1)
    N2=N0*7.531e-10*(exp(-exp(t0/100)*2.29e-13)
     &       -exp(-exp(t0/100)*0.01824))
      N22=log(N2)
    end do

    do t1=0,500,50
    NI=log(1.075e16*exp(-0.1055*exp(t1/100)))
    NXe=log(3.55642*1.075e16*(exp(-0.075837*exp(t1/100))
     &        -exp(-0.1055*exp(t1/100))))
    end do
          do t0=25,600
    write(*,*)  N11
      write(*,*)  N22

      end do
      write(*,*)  NI
    write(*,*)  NXe


    stop 
    end
    
然后编译没有问题,运行的时候出现以下的错误了,run-time error N6202,MATH
-log SING error是怎么回事啊,呜呜

15 楼

你是不是对数整成负数了?

我来回复

您尚未登录,请登录后再回复。点此登录或注册