主题:fortran错误提示的解决-unterminated block exists
seedsluis2011
[专家分:0] 发布于 2011-09-16 11:43:00
各位童鞋们,本人刚开始学fortran,问个比较傻的问题哈,编写了一个特别简单的程序,在用do语句的时候,写do 0.25, 6.0, 0.25, 为什么编译后提示unterminated block exists,请教是怎么回事,然后怎么解决呢,希望大侠们帮帮忙哈
回复列表 (共15个回复)
11 楼
cgl_lgs [专家分:21040] 发布于 2011-09-17 00:14:00
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 楼
seedsluis2011 [专家分:0] 发布于 2011-09-17 05:43:00
你说的是t0 和t1吗?这个程序是我自己写的呜,我已经改过来了,但是它还是显示“Warning: Overflow occurred while evaluating constant expression.
& -exp(-0.1055*10**(t1/100)))*1.075*10**16)”,但是我这个式子的值不是很大,怎么会overflow呢?
13 楼
cgl_lgs [专家分:21040] 发布于 2011-09-17 08:44:00
改成:
-exp(-0.1055*10.0**(t1/100.0)))*1.075*10.0**16.0)
试试?
14 楼
seedsluis2011 [专家分:0] 发布于 2011-09-19 14:14:00
我的程序还没搞定呜,我改成这样子的了
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 楼
cgl_lgs [专家分:21040] 发布于 2011-09-19 16:22:00
你是不是对数整成负数了?
我来回复