You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortran运行时出现End of file错误:数组降序排序代码运行故障求解

Fortran运行时EOF错误解决方法

错误原因分析

1. 直接触发EOF的核心原因

你代码中第一行读取逻辑是先读入数组长度n,你的输入文件array.txt首行值为60,也就是说代码会尝试读取后续60个元素存入数组,但你提供的输入文件除首行外仅存在9个有效数值,读取到文件末尾还未完成60次读取操作,就会触发「End of file」运行时错误。

2. 代码隐含的语法错误

你当前代码中存在笔误:

else
s=a(i)
a(i)=a(j)
a(j)=s
end i

此处end i是非法语法,应该改为end if,否则即使解决了读取问题,程序运行也会异常。


解决步骤

步骤1:修复读取逻辑不匹配问题

根据你的实际需求二选一即可:

  • 如果你输入文件的首行是数组长度标记位:将array.txt首行的60修改为9,匹配你后续实际提供的9个待排序元素即可。
  • 如果你输入文件的首行60是第一个待排序元素,不存在单独的长度行:修改代码读取逻辑,先遍历文件统计元素总数再读取存入数组,或使用动态数组适配输入长度。

步骤2:修复代码语法错误

将代码中的end i替换为end if。


修复后可正常运行的参考代码

program arrangingARRAY
dimension a(100)

open(1,file="array.txt")
read(1,*) n

do i =1, n
    read(1,*) a(i)
enddo
close(1)

i=1
1    continue
j=i+1

2    continue
if (a(j).lt.a(i)) then
   goto 3
else
s=a(i)
a(i)=a(j)
a(j)=s
end if
3    continue
j=j+1
if (j.le.n) then
    goto 2
else
    i=i+1
end if
if (i.lt.n) then
    goto 1
end if
open(1,file="decreasingARRAY.txt")

do i=1,n
     write(1,*) a(i)
enddo
end

对应修改后的输入文件array.txt内容:

9
123
60
21
1
2
3
4
11
90

内容的提问来源于stack exchange,提问作者gray KK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:15:03