MST

星途 面试题库

面试题:Fortran条件语句在多模块编程中的优化应用

设计一个Fortran多模块程序,其中一个模块负责读取一个文本文件中的数据,数据格式为每行两个整数。另一个模块对读取的数据进行处理,根据两个整数的大小关系执行不同的计算逻辑(例如,如果第一个数大于第二个数,计算两数之和;如果第一个数小于第二个数,计算两数之差;如果相等,计算两数之积),并将结果返回给主程序进行输出。要求在处理模块中合理使用条件语句,优化程序逻辑,并且要考虑异常情况(如文件读取失败)的处理。
16.0万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试
! 模块1:文件读取模块
module read_module
    implicit none
    contains
        subroutine read_data(file_name, num1, num2, status)
            character(len=*), intent(in) :: file_name
            integer, intent(out) :: num1, num2
            integer, intent(out) :: status
            integer :: unit, ierr
            open(newunit=unit, file=file_name, status='old', iostat=ierr)
            if (ierr /= 0) then
                status = -1
                return
            end if
            read(unit, *, iostat=ierr) num1, num2
            close(unit)
            if (ierr /= 0) then
                status = -1
            else
                status = 0
            end if
        end subroutine read_data
end module read_module

! 模块2:数据处理模块
module process_module
    implicit none
    contains
        function process_data(num1, num2) result(result_value)
            integer, intent(in) :: num1, num2
            integer :: result_value
            if (num1 > num2) then
                result_value = num1 + num2
            else if (num1 < num2) then
                result_value = num2 - num1
            else
                result_value = num1 * num2
            end if
        end function process_data
end module process_module

! 主程序
program main_program
    use read_module
    use process_module
    implicit none
    character(len=100) :: file_name = 'data.txt'
    integer :: num1, num2, status, result
    call read_data(file_name, num1, num2, status)
    if (status == -1) then
        print *, '文件读取失败'
    else
        result = process_data(num1, num2)
        print *, '处理结果:', result
    end if
end program main_program