主题: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个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-09-16 12:16:00
首先,您知道do是神马东东么?
板凳
yeg001 [专家分:14390] 发布于 2011-09-16 12:53:00
只说明楼主没看书直接写代码...
3 楼
seedsluis2011 [专家分:0] 发布于 2011-09-16 13:30:00
呃,我知道啊,我忘加end do了,虽然问题很傻,也不用这么埋汰我吧,5555
4 楼
seedsluis2011 [专家分:0] 发布于 2011-09-16 13:32:00
我就现看现用了下,以前学过的,好久没用过了,忘了都,现在又要用到所以才捡起来的,丢人了
5 楼
seedsluis2011 [专家分:0] 发布于 2011-09-16 13:36:00
既然都被您埋汰了,您就再帮我看看这个程序吧,他说Overflow occurred while evaluating constant expression,程序附在下面,欢迎提问题和意见
program homework2
real*4,dimension(24) :: N1,N2
real*4,dimension(96) :: NI,NXe
real*4 :: N0=2.26428*10**21
real*4 :: t0,t1
do t0=0.25, 6.0, 0.25
N1(t0)=log(N0*exp(-(10**t0)*1.186*10**(-6)))
N2(t0)=log(N0*7.531*10**(-10)
& *(exp((-10**t0)*2.29*10**(-13))-exp((-10**t0)*0.01824)))
end do
do t1=0.0,5.0,0.5
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)
end do
c open(UNIT=1,file='N1.DAT',status='replace', action='write')
c open(UNIT=2,file='N2.DAT',status='replace', action='write') write(*,*) N1
write(*,*) N2
write(*,*) NI
write(*,*) NXe
stop
end
6 楼
yeg001 [专家分:14390] 发布于 2011-09-16 14:11:00
楼主, 还要指出的是, 循环变量t0,t1不要用浮点数. 浮点数作为循环变量的标准是f90定的, f95就废止了.
是否值得继续用自己看着办吧.
7 楼
cgl_lgs [专家分:21040] 发布于 2011-09-16 14:13:00
尽量不要用小数做为循环变量,否则容易出兼容性问题。因为这个是被废弃的标准。
8 楼
cgl_lgs [专家分:21040] 发布于 2011-09-16 14:17:00
还有啊,楼主不该用小数做数组下标啊~~~~
9 楼
seedsluis2011 [专家分:0] 发布于 2011-09-16 22:41:00
我没有用小数作为数组下标啊?是哪里啊?
10 楼
seedsluis2011 [专家分:0] 发布于 2011-09-16 22:47:00
我想得到N1随时间t的变化值,不用数组的话应该怎么写啊?
我来回复