MST

星途 面试题库

面试题:Fortran在生物信息学数据处理中的数组操作

在生物信息学中,经常需要处理大量的基因序列数据,假设这些数据以数组形式存储。请用Fortran编写一个子程序,实现将一个一维数组中所有大于某个阈值(如100)的元素提取出来,存放到另一个数组中,并返回新数组的大小。同时说明如何在主程序中调用这个子程序。
32.6万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试
! 子程序定义
subroutine extract_elements(arr, size_arr, threshold, new_arr, size_new_arr)
    implicit none
    integer, intent(in) :: size_arr, threshold
    integer, intent(in) :: arr(size_arr)
    integer, intent(out) :: new_arr(size_arr)
    integer, intent(out) :: size_new_arr
    integer :: i, j

    j = 0
    do i = 1, size_arr
        if (arr(i) > threshold) then
            j = j + 1
            new_arr(j) = arr(i)
        end if
    end do
    size_new_arr = j
end subroutine extract_elements

! 主程序
program main
    implicit none
    integer, parameter :: size_arr = 10
    integer :: arr(size_arr) = [10, 150, 20, 200, 30, 300, 40, 400, 50, 500]
    integer :: new_arr(size_arr)
    integer :: size_new_arr
    integer :: threshold = 100

    call extract_elements(arr, size_arr, threshold, new_arr, size_new_arr)

    write(*,*) '新数组的大小:', size_new_arr
    write(*,*) '新数组的元素:'
    do i = 1, size_new_arr
        write(*,*) new_arr(i)
    end do
end program main

在上述代码中:

  1. 子程序 extract_elements
    • 接收输入数组 arr 及其大小 size_arr,阈值 threshold
    • 输出新数组 new_arr 及其实际大小 size_new_arr
    • 通过遍历 arr,将大于 threshold 的元素存入 new_arr 并记录新数组大小。
  2. 主程序 main
    • 定义了一个示例数组 arr,设置阈值 threshold
    • 调用 extract_elements 子程序获取新数组及其大小。
    • 输出新数组的大小和元素。