发布时间 : 星期日 文章Fortran模拟试卷1-8更新完毕开始阅读
ELSEWHERE log=.TRUE. END WHERE
WRITE(*,'(1X,4I6)')a,b WRITE(*,'(1X,4L6)') log END PROGRAM example
5. 下列程序执行后,输出的第一行是_____(10)______,第二行是_____(11)_______。 PROGRAM pointer INTEGER,POINTER::arrow(:) INTEGER,ALLOCATABLE,TARGET::bullseye(:,:) ALLOCATE(arrow(1:4)) Arrow=5 WRITE(*,‘(1x,414)’)arrow ALLOCATE(bullseye(1:5,3)) bullseye=1
bullseye(1:5:2,2)=8 arrow=bullseye(2:5,2) WRITE(*,‘(1x,414)’) arrow DEALLOCATE(arrow,bullseye) END PROGRAM pointer
6. 下列程序执行后,输出的第一行是____(12)______,第四行是_____(13)______。 PROGRAM character_dummy_actual
CHARACTER(len=3),DIMENSION(1:2,1:4) :: letter
letter=RESHAPE((/'abc','def','ghi','jkl','mno','pqr','stu','vwx'/),(/2,4/)) CALL test(letter)
END program character_dummy_actual SUBROUTINE test(sub_letter)
CHARACTER(len=6),DIMENSION(1:4):: sub_letter INTEGER(1):: i DO i=1,4
WRITE(*,'(1X,\ ENDDO
END SUBROUTINE test
7. 下列程序执行后,输出的第一行是____(14)______,第二行是____(15)_____。 MODULE abc TYPE pair
CHARACTER(len=15) ::name INTEGER::age,phone_number END TYPE pair END MODULE abc PROGRAM main
13
USE abc
TYPE(pair)::point
point=pair(?Micheal Jones?,32,83365620) CALL jones(point)
WRITE(*,?(1X,A,I4,I10)?) point END PROGRAM main SUBROUTINE jones(p) USE abc
TYPE(pair)::p
WRITE(*,?(1X,A,I4,I10)?) p p.name=?Jhon Williams? p.age=35
p.phone_number=83597735 END SUBROUTINE jones
8. 插入排序(在输入过程中完成排序)。以任意次序读入20个数,先将第一个数放入数组a的第
一个元素中,以后读入的数应与已存入数组中的数进行比较,确定它在从小到大的排列中应放置的位置。将该位置及其后面的元素都向后挪一个位置,把新读入的数据填入空出的位置中,这样在数组a中的数始终保持从小到大排列。20个数据处理完后输出数组a。变量num描述第几次插入,pos描述插入数组的第几个元素,num的初值直接影响插入的位置pos。请完善以下程序实现所要求的功能。 PROGRAM main
INTEGER,PARAMETER::n=20 REAL(4),DIMENSION(n)::a REAL(4)::x INTEGER(1)::i,num num= (16)______ D0 i=l,n READ(*,*) x
CALL insert(x,a,num) ENDDO
WRITE(*,?(1X,5F7.2)?) (a(i),i=l,n) CONTAINS
SUBROUTINE insert(x,a,num) IMPLICIT NONE
REAL(4),DIMENSION(:) ::a REAL(4)::x INTEGER(1)::num,i,pos LOGICAL::search pos=l
search=.TRUE.
!下列循环找出该数在数组中应处的位置
14