FORTRAN90上机试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FORTRAN90上机试题
试卷1
下面程序的功能是用指针的方法将整型变量A,B的内容互换,请改错。PROGRAM EX
IMPLICIT NONE
INTEGER::A,B,C !<==ERROR1 integer,target::a,b,c
INTEGER,POINTER::P1,P2,P3
READ *,A,B
C=B
P1=>C !<==ERROR2 p1=>a
P2=>B
P3=B !<==ERROR3 p3=>c
PRINT *,A,B
P2=P1
P1=P3
PRINT *,A,B
END
下面程序的功能是用折半法查找方法在给定的一维有序数组(升序)中查找给定的元素X,
返回该元素在数组中的下标。如果数组中没有该元素,则返回‘NO FOUND’,请填空。
PROGRAM EX
IMPLICIT NONE
INTEGER, DIMENSION(6)::A INTEGER::X,K,J,L,S
READ *,X
A=(/2,4,6,9,15,24/)
K=1
J=6
DO WHILE (K<=J)
L=(K+J)/2
IF (A(L)==X) THEN !<==BLANK1 S=L
EXIT
ELSE IF (A(L)>X) THEN
J=L-1
ELSE
K= L+1 !<==BLANK2
ENDIF
ENDDO
IF (K<=J) THEN !<==BLANK3 PRINT *, S
ELSE
PRINT *,'NO FOUND'
END IF
END
编程,求500-700之间各位数字之和等于12的整数的个数及和。 PROGRAM TEST
IMPLICIT NONE
INTEGER::N,S !N是存放个数的变量,S是存放和的变量 !!考生做题开始!!************ BEGIN *******************
INTEGER::A,B,C,I
S=0;N=0
DO I=500,700
A=I/100
B=MOD(I/10,10)
C=MOD(I,10) THEN
N=N+1
S=S+I
END IF
END DO
PRINT*,N,S
!!************ END *******************
CALL OUTPRINT(N,S) !N为符合条件的结果
!!考生做题结束,以下部分请勿修改
CONTAINS
SUBROUTINE OUTPRINT(X,Y)
CHARACTER (LEN =10):: FILENAME
INTEGER:: X,Y
FILENAME ='RESULT.TXT'
OPEN(UNIT = 1 ,FILE = FILENAME ,ACCESS = 'SEQUENTIAL' , STATUS
='REPLACE')
WRITE(1,"(1X,'N=',I4,3X,'S=',I6)") X,Y
ENDFILE(UNIT=1)
CLOSE(UNIT=1)
END SUBROUTINE OUTPRINT
END !程序结束
试卷2
下面程序的功能是从键盘输入任意10个整型数,使其按从小到大的鼠须排列并输出(冒泡
法),请改错。
PROGRAM EX
IMPLICIT NONE
INTEGER,DIMENSION(10)::A
INTEGER::I,J,TEMP
READ*,A
DO I=1,9
DO J=10,I !<==ERROR1 DO J=1,10-I
IF(A(J)>A(J+1)) THEN
TEMP=A(J)
A(J+1)=A(J) !<==ERROR2 A(J)=A(J+1)
A(J)=A(J+1) !<==ERROR3 A(J+1)=TEMP
END IF
END DO
END DO
PRINT '(1X,10I4)',(A(I),I=1,10) END
下面程序的功能是计算FIBONACCI数列(1,1,2,3,5,8,13,……,从第三项起,每
一项都是其前两项之和)前50项之和。请填空。
PROGRAM EX
IMPLICIT NONE
INTEGER::I !计数器
REAL::J,K,M !M是累加器
I=1
J=1;K=1 !第一项、第二项的值
M=0
DO WHILE (DO WHILE (I<=25)) !<==BLANK1
M=M+J+(K) !<==BLANK2
I=I+1
J=J+K
K=K+(J) !<==BLANK3
ENDDO
PRINT *, M
END
一个大于300的正整数,减去2是7 的倍数,减去5是9 的倍数,编程,求满足这个条件
的最小正整数N。
PROGRAM EX
IMPLICIT NONE
INTEGER ::N
N=300
!!考生做题开始
!!************ BEGIN *****************
DO
IF (MOD(N-2,7)= =0.AND.MOD(N-5,9)= =0)EXIT
N=N+1
END DO
PRINT’(1X,”N=”I4)’,N
!!************ END *******************
!!考生做题结束
CALL OUTPRINT(N) !N为符合条件的结果
CONTAINS
SUBROUTINE OUTPRINT(X)
CHARACTER (LEN =10):: FILENAME
INTEGER :: X
FILENAME ='RESULT.TXT'
OPEN(UNIT = 1 ,FILE = FILENAME ,ACCESS = 'SEQUENTIAL' , STATUS ='REPLACE')
WRITE(1,"(1X,'N=',I4)") X
ENDFILE(UNIT=1)
CLOSE(UNIT=1)
END SUBROUTINE OUTPRINT END PROGRAM EX !程序结束