如何为用户输入定义数组?Fortran90实现1到N平方根数组存储
Fortran90 平方根数组程序修复方案
核心问题说明
你遇到的报错主要来源于以下常见的Fortran90语法错误:
- 可分配动态数组使用前未执行
allocate()分配内存,直接赋值触发内存访问错误 - 调用内置
sqrt()函数时直接传入整数参数,类型不匹配触发编译/运行报错 - 循环索引和数组下标范围不匹配,触发数组越界错误
可直接运行的正确实现
program calc_sqrt_array implicit none ! 声明变量与可分配数组 integer :: input_N, loop_idx integer, allocatable :: int_array(:) real, allocatable :: sqrt_result_array(:) ! 读取用户输入的N值 print *, "请输入正整数N:" read(*, *) input_N ! 为两个数组分配对应长度的内存 allocate(int_array(input_N), sqrt_result_array(input_N)) ! 循环填充数组内容 do loop_idx = 1, input_N int_array(loop_idx) = loop_idx ! 整数转实数后再调用sqrt函数,避免类型不匹配 sqrt_result_array(loop_idx) = sqrt(real(loop_idx)) end do ! 格式化输出结果 print *, "===== 1到N的平方根结果 =====" print *, "整数 | 平方根" do loop_idx = 1, input_N write(*, '(I4, A, F8.4)') int_array(loop_idx), " | ", sqrt_result_array(loop_idx) end do ! 释放数组内存 deallocate(int_array, sqrt_result_array) end program calc_sqrt_array
注意事项
- 代码开头必须加
implicit none,关闭Fortran默认隐式类型规则,避免变量拼写错误引发的异常问题 - 如果N的取值过大,注意调整输出语句的格式符宽度,避免内容截断
- 程序运行时输入的N必须为正整数,否则会触发数组分配失败错误
内容的提问来源于stack exchange,提问作者ChefP905
相关产品推荐
相关产品推荐

