回 帖 发 新 帖 刷新版面

主题:如何找错误

我是初学者,尝试编写一个简单问题的程序,一种写法是没有用到SUBRUTINE编出,另一种写法是用到subroutine,call ,但是二者计算结果相差甚远,我估计可能是用了subroutine的程序出错了,但试了几次也不知错在哪,恳请高手指点

回复列表 (共20个回复)

11 楼

说得有道理

12 楼


言之有理,写程序应增强可读性

13 楼

直接
   X=1
就可以了,编译还能做优化
我不知道编译器会不会对你这样的循环赋值进行多大的优化。
可以自己测试下,弄个大点的数组测试

14 楼

[quote]
8楼:那个子程序没问题,那是赋初始值[/quote]
太有問題了。。。
這個只是給子程序里的x數組做操作,主程序里的根本沒變化!!!

15 楼

回14楼:当我需要测试多个问题时,需要有一个子程序来写出所有的问题,需要一个子程序写出初始点,我们现在讨论的程序是只测试一个问题,本来这个赋初始点的子程序也可不要,直接把它的内容放在主程序就可以了,但我为了测试这部分程序正确与否我只选中一个问题一个初始点,我以为这样不会有问题。

16 楼

[quote]回14楼:当我需要测试多个问题时,需要有一个子程序来写出所有的问题,需要一个子程序写出初始点,我们现在讨论的程序是只测试一个问题,本来这个赋初始点的子程序也可不要,直接把它的内容放在主程序就可以了,但我为了测试这部分程序正确与否我只选中一个问题一个初始点,我以为这样不会有问题。[/quote]

在主程序call initpoint(N)初始化结束之后,下面加一句write(*,*) x 看看有没有实现把数组x初始化的目的, 这就是找错误的办法,一步一步往下做。

17 楼

不是你这样的想法不对, 而是变量之间的数据交流出问题了. 子程序的x跟主程序的x有什么关系呢? 它又不是全局变量.

18 楼


回16:我试试,谢谢指点。

19 楼


回17:我也感觉主程序与子程序变量之间的数据交流出问题了,但不知如何改正,我在试试,琢磨琢磨,谢谢帮助。

20 楼

谢谢各位的帮助,问题已解决

我来回复

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