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

如何为用户输入定义数组?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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:54:02