面试题答案
一键面试! 子程序定义
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
在上述代码中:
- 子程序
extract_elements
:- 接收输入数组
arr
及其大小size_arr
,阈值threshold
。 - 输出新数组
new_arr
及其实际大小size_new_arr
。 - 通过遍历
arr
,将大于threshold
的元素存入new_arr
并记录新数组大小。
- 接收输入数组
- 主程序
main
:- 定义了一个示例数组
arr
,设置阈值threshold
。 - 调用
extract_elements
子程序获取新数组及其大小。 - 输出新数组的大小和元素。
- 定义了一个示例数组