Fortran77如何通过子程序将输入元素读取存入数组?
代码功能验证
你编写的固定格式Fortran代码已经可以实现预期功能:主程序声明长度为5的实型数组,传递给readData子程序后,子程序会循环5次从标准输入读取数值存入对应数组下标位置。
规范优化建议
- 补充子程序内变量的显式声明,避免依赖隐式声明规则(Fortran默认首字母i、j、k、l、m、n开头的变量为整型,其余为实型),降低代码出错风险:
- 子程序内补充数组声明
real arr(5) - 补充循环变量声明
integer i
- 子程序内补充数组声明
- 如果需要适配不同长度的数组,避免硬编码数组长度,可以将数组长度作为参数传递,修改后的子程序示例:
subroutine readData(arr, arr_len) integer arr_len real arr(arr_len) integer i do i = 1, arr_len read(*,*) arr(i) end do return end
主程序对应调用语句修改为call readData(arr, 5)即可。
- 注意固定格式Fortran的语法要求:非注释行前6列为行号保留区,普通代码需要从第7列开始编写,你现有代码的缩进符合该要求。
修正后符合规范的完整代码
program main real arr(5) call readData(arr) stop end subroutine readData(arr) real arr(5) integer i do i=1, 5 read (*,*) arr(i) end do return end
内容的提问来源于stack exchange,提问作者Darthvader
相关产品推荐
相关产品推荐

