主题:如何找错误
lqmj
[专家分:40] 发布于 2010-10-14 01:27:00
我是初学者,尝试编写一个简单问题的程序,一种写法是没有用到SUBRUTINE编出,另一种写法是用到subroutine,call ,但是二者计算结果相差甚远,我估计可能是用了subroutine的程序出错了,但试了几次也不知错在哪,恳请高手指点
回复列表 (共20个回复)
11 楼
lqmj [专家分:40] 发布于 2010-10-14 22:32:00
说得有道理
12 楼
lqmj [专家分:40] 发布于 2010-10-14 22:36:00
言之有理,写程序应增强可读性
13 楼
aliouying [专家分:1150] 发布于 2010-10-14 23:32:00
直接
X=1
就可以了,编译还能做优化
我不知道编译器会不会对你这样的循环赋值进行多大的优化。
可以自己测试下,弄个大点的数组测试
14 楼
cgl_lgs [专家分:21040] 发布于 2010-10-15 06:57:00
[quote]
8楼:那个子程序没问题,那是赋初始值[/quote]
太有問題了。。。
這個只是給子程序里的x數組做操作,主程序里的根本沒變化!!!
15 楼
lqmj [专家分:40] 发布于 2010-10-15 09:14:00
回14楼:当我需要测试多个问题时,需要有一个子程序来写出所有的问题,需要一个子程序写出初始点,我们现在讨论的程序是只测试一个问题,本来这个赋初始点的子程序也可不要,直接把它的内容放在主程序就可以了,但我为了测试这部分程序正确与否我只选中一个问题一个初始点,我以为这样不会有问题。
16 楼
jstzhurj [专家分:4680] 发布于 2010-10-15 09:48:00
[quote]回14楼:当我需要测试多个问题时,需要有一个子程序来写出所有的问题,需要一个子程序写出初始点,我们现在讨论的程序是只测试一个问题,本来这个赋初始点的子程序也可不要,直接把它的内容放在主程序就可以了,但我为了测试这部分程序正确与否我只选中一个问题一个初始点,我以为这样不会有问题。[/quote]
在主程序call initpoint(N)初始化结束之后,下面加一句write(*,*) x 看看有没有实现把数组x初始化的目的, 这就是找错误的办法,一步一步往下做。
17 楼
yeg001 [专家分:14390] 发布于 2010-10-15 09:52:00
不是你这样的想法不对, 而是变量之间的数据交流出问题了. 子程序的x跟主程序的x有什么关系呢? 它又不是全局变量.
18 楼
lqmj [专家分:40] 发布于 2010-10-15 16:46:00
回16:我试试,谢谢指点。
19 楼
lqmj [专家分:40] 发布于 2010-10-15 16:52:00
回17:我也感觉主程序与子程序变量之间的数据交流出问题了,但不知如何改正,我在试试,琢磨琢磨,谢谢帮助。
20 楼
lqmj [专家分:40] 发布于 2010-10-15 21:38:00
谢谢各位的帮助,问题已解决
我来回复