发布时间 : 星期日 文章Fortran模拟试卷1-8更新完毕开始阅读689aef09844769eae009ed4a
REAL X,Y,A,B,T INTEGER N READ*,X
T= (21) B=1.0 Y=T N=2
DO WHILE( (22) ) A=X**(2*N-1)/(2*N-1) B= (23) T=A*B Y=Y+T N=N+1 ENDDO
PRINT'(1X,F5.2,I3,F12.7)',X,N-1,Y END
10.下面程序的功能是输入十个任意四位整数A,用来检验inver子程序的可靠性。其中CALL
inver(A,B)应能将A中四位数倒过来成为B(如A=1966,可得B=6691)。最后计算并输出由具体数字构成的算式C=A+B。 INTEGER A,B,C,I DO I=1,10 READ*,A
DO WHILE(A<1000 .OR. A>9999) READ*,A ENDDO
CALL inver(A,B) C=A+B
PRINT'(1X,I5,\ENDDO END
SUBROUTINE inver(M,N) IMPLICIT NONE (24) A=M
DO I=1,4
NN(I)=MOD(A,10) (25) ENDDO B=0
DO J=1,4
K=NN(J)*10**(4-J) B=B+K ENDDO
(26) END
29
11.下面的程序建立一个链表,子程序fmax()的功能是:求出链表所有结点中数据成员值最大的结
点的位置,并由参数s返回给主函数。该函数的第一个参数是链表的首指针。 MODULE AA TYPE NODE
INTEGER DATA
TYPE(NODE),POINTER::NEXT END TYPE NODE CONTAINS
SUBROUTINE FMAX(HEAD,S,I) 27 INTEGER:: I,J=0 P=>HEAD;S=>P
IF(.NOT.(ASSOCIATED(P)))RETURN DO WHILE(ASSOCIATED(P)) J=J+1
IF( (28) )THEN I=J;S=>P ENDIF
(29) ENDDO
END SUBROUTINE
SUBROUTINE PRINTL(H)
TYPE(NODE),POINTER::H,P P=>H
DO WHILE(ASSOCIATED(P)) PRINT*,P.DATA P=>P.NEXT ENDDO
END SUBROUTINE END MODULE AA
PROGRAM MAIN (30)
TYPE(NODE),POINTER::H,P,P1 INTEGER A,I NULLIFY(P)
PRINT*,'INPUT DATA' READ*,A
DO WHILE(A/=-1) ALLOCATE(P) P.DATA=A
IF(.NOT.(ASSOCIATED(H)))THEN H=>P;P1=>P ELSE
P1.NEXT=>P;P1=>P
30
ENDIF
PRINT*,'INPUT DATA' READ*,A ENDDO
NULLIFY(P) CALL PRINTL(H) CALL FMAX(H,P,I) PRINT*,'DDD'
IF(ASSOCIATED(P))PRINT*,P.DATA,I END
FORTRAN90模拟试题四(上机部分)
一、 改错题
【题目】本程序的功能是:求100到999之间所有三位同构数。所谓三位同构数就是该数出现在其平方的末三位。含错误的程序为:
SUBROUTINE FIND(NT,FLAG,MT) IMPLICIT NONE LOGICAL FLAG
INTEGER::N,NT,MT,K FLAG=FALSE N=NT MT=N*N K=1 DO N=N/10
IF(N/=0)EXIT K=K+1 ENDDO
IF(MOD(MT,10)==NT)FLAG=.TRUE. END
PROGRAM MAIN LOGICAL FLAG
OPEN(1,FILE=?MYF1.OUT?) DO N=100,999
CALL FIND(N,FLAG,M)
IF(FLAG)WRITE(1,\END
【要求】1、必须将上述源程序录入到文件MYF1.F90中,然后根据题目的要求以及程序中前后语句
的逻辑关系,改正程序中的错误。
2、改错时,除可以增加说明语句和可调换语句顺序外,不允许增加或删除任何语句。 3、改正后的程序存放在考试盘MYF1.F90文件中,并将运行结果以MYF1.OUT为文件名存于考盘中。
【注意】本题完成后必须将文件MYF1.*拷贝到考试盘中供阅卷使用。
二、 编程题
【题目】函数f(x)的展开式如下:
1cos3x
f(x)?cosx??2313cos5x135cos7x?????????245246731
?(2n?1)!!cos(2n?1)x?cosx??,0?x??
(2n?1)n?1(2n)!!
其中,(2n-1)!!=1·3·5·7·9·?·11·(2n-1), (2n)!!=2·4·6·8·10·12·?·2n。
将上式编写成外部函数。当通项的绝对值小于EPS时,计算停止。 在主程序中从数据文件内读出三组X和EPS的值如下:
0.071068, 1E-10; 0.8660254, 1E-9; 1.5707963, 1E-9。 并将三个计算结果写入输出文件。
【要求】1.按要求编写程序,并将源程序录入到文件myf2.f90中。
2.建立数据文件myf2.dat,将三组输入数据在程序运行前输入到该文件中,程序从该文件中读取数据。
3.将程序运行结果存放于myf2.out文件中。
4.数据文件的打开、读写、关闭均要求用FORTRAN 90语言文件操作语句实现。
【注意】本题完成后必须将myf2.f90、myf2.dat、myf2.out和myf2.exe拷贝到考试盘中。
? 32