FORTRAN90上机试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

试卷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

相关文档
最新文档