Fortran模拟试卷1-8 联系客服

发布时间 : 星期一 文章Fortran模拟试卷1-8更新完毕开始阅读689aef09844769eae009ed4a

CALL p() ENDDO PRINT*,I

END PROGRAM MAIN

执行以上程序后,输出的第一行是 (6) ,第二行是 (7) ,第三行是 (8) 。 4. 阅读以下程序:

PROGRAM MAIN

INTEGER:: A(3,3),I,J,K,N DO K=1,5

IF(K<=3)THEN DO I=1,K N=N+1

A(I,K-I+1)=N ENDDO ELSE

DO I=1,6-K N=N+1

A(K-3+I,4-I)=N ENDDO ENDIF ENDDO DO K=1,3 DO I=1,3

PRINT'(I3\\)',A(K,I); ENDDO PRINT* ENDDO

END PROGRAM MAIN

执行以上程序后,A(1,3)的值是 (9) ,A(2,2)的值是 (10) ,A(3,1)的值是 (11) 。 5. 阅读以下程序:

sum=1.0; ID=1.0; K=1 10 K=(-1.0)*K ID=ID*2.0

sum+K/ID

IF(ID.LE.7) GOTO 10 WRITE(*,*) sum WRITE(*,*) ID END

执行以上程序后,输出的第一行是 (12) ,第二行是 (13) 6. 阅读以下程序: REAL A(10),IP DO K=1,10

A(K)=IP(K*2)/IP(K) ENDDO

WRITE(*,100) A(1),A(2) 100 FORMAT(1X,2F3.1)

END

21

REAL FUNCTION IP(N) M=0

DO K=1,N M=M+K ENDDO IP=M END

执行以上程序后,A(1)的值是 (14) ,A(2)的值是 (15) 。 7.求多项式a0+a1x

1

+…+an-1xn-1+anxn之和的外部函数

n

数组A表示多项式系数,变量T表示x ,S表示多项式之和。 FUNCTION p(A,N,x) RESULT(r_p) (16) S= (17) T=1.0 DO I=1,N

T= (18) S=S+A(I)*T (19) PRINT*,'S=',S (20) END

8. 用选择法,将N个整数按从小到大排列。 PARAMETER(numl=500) INTEGER num(numl)

READ*,N,(num(I), (21) ) DO I=1,N-1 min=I

DO J= (22)

IF(num(min) .GT. num(J)) (23) ENDDO

IF(min .NE. I)THEN it=num(I)

num(I)=num(min) (24) ENDIF ENDDO

PRINT*,(num(I),I=1,N) END

9. 以下程序是通过超载赋值(=)运算符,实现将字符的ASCII码赋给整型变量的功能.

SUBROUTINE CTOI(I,C) INTEGER ,INTENT(OUT):: I CHARACTER ,INTENT(IN):: C I= (25) END SUBROUTINE

PROGRAM MAIN

22

INTERFACE ASSIGNMENT(=) SUBROUTINE (26)

INTEGER ,INTENT(OUT):: I CHARACTER ,INTENT(IN):: C ENDSUBROUTINE (27) INTEGER I

CHARACTER:: C='A' I=C

PRINT*,C,I

END PROGRAM MAIN 10.求N!。

PRINT*,'Input N?' READ *,N M=1

(28) DO

nfac=nfac*M

IF( (29) )THEN PRINT*,'N!=',nfac (30) ENDIF M=M+1 ENDDO END

FORTRAN90模拟测验三(上机部分)

一、 改错题

【题目】本程序从键盘输入n个整数,并存在数组中,以0作为输入数据的结束标志。如果相邻的两数之和为素数,则输出它们的元素名称和元素值。这里第一个元素和最后一个非零元素也认为是相邻元素。

从键盘输入的数据为:5, 7, 4, 9, 31, 6, 0。含有错误的程序为:

FUNCTION PRIME(N) RESULT(RP) IMPLICIT NONE J=SQRT(REAL(N)) I=2 RP=1

DO WHILE(I<=J)

IF(N/I*I==N) RP=0 I=I+1 ENDDO

END FUNCTION

PROGRAM MAIN

INTEGER I,J,N,A(30),PRIME N=1

PRINT*,'请输入数据'

23

READ*,A(N)

DO WHILE(A(N)==0) N=N+1

PRINT*,'请输入数据:' READ*,A(N) ENDDO

DO I=1,N-1 J=I+1

IF(J==N)J=1

IF(PRIME(A(J))==1)THEN

PRINT\ ENDIF ENDDO END

【要求】1. 必须将上述源程序录入到文件MYF1.F90中,然后根据题目的要求以及程序中前后

语句的逻辑关系,改正程序中的错误.

2. 改错时,除可以增加说明语句和可调换语句顺序外,不允许增加或删除任何语句. 3. 改正后的程序存放在考试盘MYF1.F90文件中。

【注意】本题完成后必须将文件MYF1.F90拷贝到考试盘中供阅卷使用。

二、 编程题

【题目】求S??i?1i??1的近似值。当求出的最后一项小于1.0E-6时,就认为满足精度要求,2ii!输出S的近似值,及相应的i值。

【要求】 1. 必须将源程序存到文件MYF2.F90中。

2. 用文件操作语句将求出的S近似值和相应i值存入结果文件MYF2.OUT中。

【注意】本题完成后必须将文件MYF2.F90及MYF2.OUT拷贝到考试盘中供阅卷使用。

24