为什么Fortran计算的时候会出现0.000000e什么的

如这个programex99realkrealdrealrreal,parameter::pi=3.1415integeriinteger,parameter::limi... 如这个
program ex99
real k
real d
real r
real,parameter :: pi=3.1415
integer i
integer,parameter :: limit=5

do i=1,limit
call sub()
write(*,*) d

end do
stop
end
subroutine sub()

write(*,*) "input k"
read(*,*) k
write(*,*) "inputr"
read(*,*) r
d=k*pi*r

return

end
我是新手,不懂求教
展开
 我来答
splashchaos
2015-02-03 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3635万
展开全部

那个要么是变量没有赋值或初始化,或者计算溢出了~~~

你的程序主要问题是没有搞清主程序和子程序间的变量传递问题。 代码应该修正如下:

    program ex99        
        real :: d        
        integer :: i
        integer, parameter :: limit=5

        do i=1,limit
            d = sub()
            write(*,*) d
        end do    
    end program ex99

    function sub()        
        real :: k, r
        real, parameter :: pi = 3.1415
        write(*,*) "input k"
        read(*,*) k
        write(*,*) "inputr"
        read(*,*) r
        sub=k*pi*r    
    end function

运行:

 input k
2
 inputr
1
   6.28299999
 input k
1
 inputr
1
   3.14150000
 input k
 。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式