我编写这个程序时遇到了问题。我花了好几个小时试图弄清问题是什么,但它只是说有两个主要程序根本没有任何帮助。我会非常感谢任何帮助。感谢
c comments
*
program cylinder
real diam(10),height(10),volume(10)
external circ,surface,vol
integer count,i,j
parameter (pi = 3.14159)
j = 0
count = 1
do i=1,10
diam(i) = 0
end do
10 j = j+1
write(*,*) 'Please enter the diameter and height of
A a cylinder'
read*, diam(j),height(j)
if (diam(j) .NE. 0 .AND. j .LE. 10) goto 10
20 write(*,*) 'Cylinder', count, 'Circumfrence =', circ(diam)
write(*,*) 'Total Surface Area=',
B surface(diam,height)
Call vol(diam,height,volume)
write(*,*) 'Volume=', volume(count)
count = count+1
if (diam(count) .NE. 0 .AND. count .LE. 10) goto 20
end
function circ(d) = d*pi
function surface(d,h)
real d,h
surface = 2*pi*(d/2.)**2 + d*pi*h
end
subroutine vol(d,h,volume)
real d,h,volume(count)
volume(count) = h*pi*(d/2.)**2
end
答案 0 :(得分:2)
对于有两个主程序的特殊问题,你可以通过替换行
来消除它 function circ(d) = d*pi
进入
function circ(d)
real circ
real d
circ = d*pi
end
其他明显的问题是共享pi,跨程序/功能/子程序计数。当你在执行功能时,你无法看到主程序中的内容。最简单的解决方案是将其与其他参数一起传递。在子程序vol中,
volume(count) = h*pi*(d/2.)**2
为什么你有count
?