- 积分
- 5344
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-8-28
- 最后登录
- 1970-1-1
|
发表于 2018-2-4 17:54:41
|
显示全部楼层
楼主这个错误有点马虎啊,你要站在电脑的角度去思考程序是怎么运行的
这个是一个很常见的数组越界的错误
【问题分析】
一、首先看声明变量和数组的语句
type(station),dimension (n)::sta
定义了数组sta,其数组上界是165,也就是总时间n的大小
二、看程序具体调用时,数组标号怎么运行的,问题就出在这
do j=1,n 【让j从1到n,步长1自加】
if(sta(j).yy==sta(j+1).yy.and.sta(j+1).yy==sta(j+2).yy)then
....(余下代码略)
当j运行到n-1(j=164)的时候,这个if语句调用的数组sta就开始有问题了
第一个sta是sta(164),好的可以
第二、第三个sta是sta(165),没问题,正好是这个数组的最后一个数
第四个sta问题就来了,这个时候,程序内部的j是164,而j+2是166,这个就越界了
具体怎么改楼主自己练习一下吧
|
评分
-
查看全部评分
|