MST

星途 面试题库

面试题:Fortran函数与子程序定义基础应用

在Fortran中,编写一个函数,该函数接收两个实数参数,返回它们的和。同时,编写一个子程序,该子程序接收一个数组作为参数,并将数组中的每个元素乘以2。请展示完整代码,并说明函数和子程序在调用方式上有什么不同。
10.9万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试
! 定义函数
function add_numbers(a, b) result(sum_result)
    real :: a, b
    real :: sum_result
    sum_result = a + b
end function add_numbers

! 定义子程序
subroutine multiply_by_two(arr)
    real, intent(inout) :: arr(:)
    integer :: i
    do i = 1, size(arr)
        arr(i) = arr(i) * 2
    end do
end subroutine multiply_by_two

program main
    real :: num1, num2, sum_value
    real, dimension(3) :: my_array
    num1 = 3.0
    num2 = 5.0
    sum_value = add_numbers(num1, num2)
    print *, '两数之和为:', sum_value

    my_array = [1.0, 2.0, 3.0]
    call multiply_by_two(my_array)
    print *, '数组元素乘以2后:', my_array
end program main

函数和子程序调用方式的不同

  1. 函数调用
    • 函数调用时会返回一个值,通常作为表达式的一部分参与运算。例如在上述代码中 sum_value = add_numbers(num1, num2),函数 add_numbers 返回的和被赋值给 sum_value 变量。
  2. 子程序调用
    • 子程序主要用于执行一系列操作而不返回值(虽然可以通过 intent(inout) 参数来修改传入的数据)。调用子程序使用 call 语句,如 call multiply_by_two(my_array),它直接对传入的数组 my_array 进行操作,而不会返回一个用于赋值的结果。