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

Fortran计算文件数据均值标准差编译报do while下Unclassifiable statement错误

报错原因及代码问题梳理

直接触发Unclassifiable statement at (1)报错的原因

你写的do while语句不符合Fortran语法要求:Fortran中do while的判断条件必须用括号包裹,你当前的代码写的是do while i < 60000,缺少括号,编译器无法识别这是合法的循环开头,因此将循环内的第一行语句判定为不可分类语句。正确写法应为do while (i < 60000)。

其余存在的语法/逻辑错误

  • 函数调用缺少括号:float firstnumber是非法写法,Fortran中函数传参必须用括号包裹参数,应改为float(firstnumber)
  • print语句语法错误:缺少列表输出标识*和变量分隔符,现有写法print,"Average = "average应改为print *, "Average = ", average,标准差的打印语句同理修改
  • 循环未闭合:do while循环没有对应的end do语句,当前代码中循环开启后没有结束标识,编译器会认为后续所有代码都属于循环内的内容,语法和逻辑都不合法
  • 读文件逻辑错误:你之前打开的目标文件绑定的单元号是1,循环内写的read(i,*)会将变量i的值作为文件单元号读取,完全不符合读目标文件的需求;且你给arrayone分配内存后从未给数组赋值就直接计算求和,结果完全是随机无效值
  • 变量读取逻辑错误:开头用循环读10次firstnumber,最终firstnumber只会保留第10次读到的数值,如果你的Numbers1.txt第一行是数组长度,不需要循环读10次,仅读取1次即可
  • 标准差计算公式错误:当前公式sqrt(sum_ - average) * (sum_ - average)逻辑完全错误,标准差需要先计算每个数组元素与平均值差值的平方和,再除以元素个数后开平方,现有公式完全不符合计算规则
  • 笔误:deallocate(arrayone)!Deallocating arrayone}末尾多了多余的右大括号,需要删除

内容的提问来源于stack exchange,提问作者Nik Wrye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:48:00