FORTRAN90习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
。
Biblioteka Baidu
二、填空题(在空白处添入正确内容)
1.阅读以下程序: FUNCTION fac(A) RESULT(rfac) INTEGER A,rfac INTEGER,SAVE::C=3 B=1
C=C+1 rfac=A+B+C END FUNCTION PROGRAM main INTEGER::A=3,J,fac DO J=0,2 PRINT*,fac(J) ENDDO END PROGRAM main 执行以上程序后,输出的第一行是 2. 阅读以下程序: SUBROUTINE swap(S1,S2) CHARACTER(*) S1,S2 CHARACTER(3)T T=S1;S1=S2;S2=T END SUBROUTINE
。
读入的第一个记录为1,-1,2,-2,第二个记录为3,-3,4,-4,5,-5。 INTEGER K(4),M(2,3) READ*,K CALL sub(K,M) PRINT"(1X,I2)",K(3),M(1,3) END SUBROUTINE sub(K,M) INTEGER K(2,2),M(6),I,J READ*,M DO I=1,2 DO J=1,2 K(I,J)=K(I,J)-M(J) M(I)=M(I)+K(I,J) ENDDO ENDDO DO I=3,6 M(I)=M(I-1)+M(I-2) ENDDO END 3.下列程序运行后,A(1,4)= ,A(5,3)= 。 INTEGER A(5,5),T,I,J,K,M DO I=1,5 DO J=1,5 A(I,J)=J ENDDO DO K=1,I-1 T=A(I,5) DO M=4,1,-1 A(I,M+1)=A(I,M) ENDDO A(I,1)=T ENDDO ENDDO PRINT"(1X,I2)",A(1,4),A(5,3) END 4.下列程序运行后输出结果:M= ,X= 。 OPEN(1,FILE='A.DAT') WRITE(1,'(2I1/F3.1)') 2,3,4.5 CALL ABC END SUBROUTINE ABC REAL X INTEGER M BACKSPACE(1) READ(1,"(F3.1)") X M=X WRITE(*,"(1X,'M=',I2,'X=',F3.1)") M,X END 5.下列程序运行时,输入3,5,F 时,输出结果中 B(5,3)= ; 输入3,5,T 时,输出结果中 B(5,3)= ; MODULE AA
n
M=1 DO nfac=nfac*M IF( )THEN PRINT*,'N!=',nfac ENDIF M=M+1 ENDDO END
三、编程题
1、输入年月,输出该月所对应的天数。编写程序。 2、设计一个子例行程序,计算一个任意矩阵 A 中的最大元素和最小元素。 3、对任意自然数 n,设计一个求 n 的各位数字的立方和的函数子程序 F(n)(如 F(121)=1**3+2**3+1**2=1+8+1=10),并调用 F(n)求1000以内的所有水仙花数(当一个数各 个数位的立方和等于这个数本身时,称这样的数为水仙花数)
1
,A(2,2)的值是
,A(3,1)的值是
。
,第二行是
,A(2)的值是
n-1 n
。 之和的外部函数
+…+an-1x +anx
数组 A 表示多项式系数,变量 T 表示x ,S 表示多项式之和。 FUNCTION p(A,N,x) RESULT(r_p) S= T=1.0 DO I=1,N T= S=S+A(I)*T PRINT*,'S=',S END 8. 用选择法,将 N 个整数按从小到大排列。 PARAMETER(numl=500) INTEGER num(numl) READ*,N,(num(I), ) DO I=1,N-1 min=I DO J= (22) IF(num(min) .GT. num(J)) ENDDO IF(min .NE. I)THEN it=num(I) num(I)=num(min) ENDIF ENDDO PRINT*,(num(I),I=1,N) END 9. 以下程序是通过超载赋值(=)运算符,实现将字符的 ASCII 码赋给整型变量的功能. SUBROUTINE CTOI(I,C) INTEGER ,INTENT(OUT):: I CHARACTER ,INTENT(IN):: C I= END SUBROUTINE PROGRAMMAIN INTERFACE ASSIGNMENT(=) SUBROUTINE INTEGER ,INTENT(OUT):: I CHARACTER ,INTENT(IN):: C ENDSUBROUTINE INTEGER I CHARACTER:: C='A' I=C PRINT*,C,I END PROGRAMMAIN 10.求 N!。 PRINT*,'Input N?' READ *,N
N=RESHAPE((/1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1/),(/3,3,3/))
A.N(1,1,-1)与 N(-1,-1,0) B.N(1,1,0)与 N(-1,-1,0) C.N(1,1,1)与 N(1,-1,-1) D.N(1,1,-1)与 N(-1,-1,1) 6.下列数据中,不符合 FORTRAN90常量表示的是 。 A.-25.6 B.3.2344D0 C.’BOOT’’=’ D.TRUE 7.运行下列程序时输入数据5E2后,其输出结果是 。 READ‘(E5.2)’,X WRITE(*,‘(1X,F6.2)’)X END A.5.00 B.500.00 C.0.05 D.****** 8.圆心在原点的两个同心圆,半径分别为2和4。描述点(X,Y)在小圆外,大圆内(包括在两 圆周上)的表达式是 。 A.ABS(X)<=4.0 .AND. ABS(Y)>=2.0 B.2.0>=SQRT(X*X+Y*Y)<=4.0 C.X*X+Y*Y<=16.0 .AND. X*X+Y*Y>=4.0 D. (X .OR. Y)>=2.0 .AND.(X .OR. Y)<=4.0 9.以下关于指针说法不正确的是 。 A. 指针变量可以指向任何变量 B. 一个指针变量可以同时指向多个变 量 C. 多个指针变量可以同时指同向一个变量 D. 指针变量的内容是地址或变量名称 10.以下关于接口块说法不正确的 。 A. 当外部过程名作为实参时,一定要用接口块 B. 重载运算符时,一定要用接口 块 C. 调用子程序时,实参和形参的次序及个数不同时,一定要用接口块 D. 外部函数的返回值为数组时,一定要用接口块
二、填空题(在空白处添入正确内容)
1.以下程序运行后,输出的第一行为 REAL:: X=5.0,Y=5.0 PRINT'(1X,3F5.1)',X,Y,X CALL sub(X,Y,X) PRINT'(1X,3F5.1)',X,Y,X END SUBROUTINE sub(X,Y,Z) REAL X,Y,Z X=X+1.0; Y=Y+2.0; Z=Z+3.0 END SUBROUTINE 2.下列程序运行后,K(3)= ,M(1,3)= ; 第二行为
,第三行是
。
PROGRAMMAIN CHARACTER(3) :: S1='BD',S2='BC',S3='AB' IF (S1>S2) CALL swap(S1,S2) IF (S2>S3) CALL swap(S2,S3) IF (S1>S2) CALL swap(S1,S2) PRINT*,S1; PRINT*,S2; PRINT*,S3 END PROGRAMMAIN 执行以上程序后,输出的第一行是 ,第二行是 3.阅读以下程序: MODULE aa INTEGER::J=2 END MODULE aa SUBROUTINE p() USE aa DO I=1,3 J=J+1 PRINT'(I3\)',J ENDDO PRINT* END SUBROUTINE PROGRAMMAIN USE aa DO I=0,2 CALL p() ENDDO PRINT*,I END PROGRAMMAIN 执行以上程序后,输出的第一行是 4. 阅读以下程序: PROGRAMMAIN INTEGER:: A(3,3),I,J,K,N
FORTRAN90习题2
一、 选择题(从4个可选答案中选择一个正确答案添入空白处)
1. 下面是5个准备用作子程序(辅程序)的形参,四组选择中其形参均正确的是 。 ①常数符号名 ②变量名 ③数组元素名 ④形式过程 ⑤数组名 A.①③⑤ B.②③④ C.①③④ D.②④⑤ 2.语句 OPEN(3,FILE=‘ABC’,ACCESS=‘DIRECT’,RECL=40)打开的是 文件。 A.有格式顺序存取 B.无格式顺序存取 C.有格式直接存取 D.无格式直接存取 3.辅程序引用时,某实参可为常数、函数引用及表达式时,其相应形参是 。 A.变量名 B.数组名 C.过程名 D.* 4.并非所有的标准函数名均可作为过程形实结合的实参,例如 就不能。 A.ABS B.SIN C.REAL D.LOG 5.以下程序片段中其值均为9的元素是 。 INTEGER: :N(-1:1,-1:1,-1:1)
,第三行是
。
,第二行是
,第三行是
。
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 PROGRAMMAIN 执行以上程序后,A(1,3)的值是 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 执行以上程序后,输出的第一行是 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 REAL FUNCTION IP(N) M=0 DO K=1,N M=M+K ENDDO IP=M END 执行以上程序后,A(1)的值是 7.求多项式a0+a1x
FORTRAN90习题
一、选择题(从4个可选答案中选择一个正确答案添入空白处)
1.下列字符串中可用作 FORTRAN90变量名的是 。 A.ABC B. A-BCD C. 2ABC D. AB.C 2.下列数据中不符合 FORTRAN90常数表示的为 。 A. 21.50 B. +0.0D0 C. .TRUE. D. $1000 3.执行 WRITE(8,'(1X,2I4)')(I,I=1,3)后生成 个记录。 A. 1 B. 2 C. 3 D. 12 4.数学表达式的 FORTRAN 表达式为 。 A. SQRT(X)**3)*LOG(X**2+Y**2)/X B. SQRT(X**3)*LOG((X**2+Y**2)/X) C. (SQRT(X))**3*LN((X**2+Y**2)/X) D. SQRT(X**3)*LN(((X**2)+Y**2)/X) 5.表达式:-B+SQRT(B*B-4.0*A*C).LE.3E-5值的类型是 。 A. 逻辑型 B. 整型 C. 实型 D. 字符型 6.下面格式输入语句 READ(*,‘(3F3.1)’)X 如果输入 1234.567 则 X 的值为 。 A. 123.0 B. 12.3 C. 1234. D. 1234.567 7.FORTRAN90语言中变量名长度为 个字符。 A. 1-8 B. 8 C. 1-31 D. 31 8.按隐含约定,设 X=2.5,Y=1.0,Z=3.0 执行赋值语句 I=X+Y/Z 后 I 的值为 。 A. 2.0 B. 2 C. 3 D. 3.0 9.下列语句中那个语句是错误的是 。 A. READ(*,*)X B. READ*,X C. PRINT(*,*)X D. PRINT *,X 10.说明语句 REAL A(1:2,-1:10)说明数组 A 的元素个数为 。 A. 11 B. 12 C. 22 D. 24 11.M 能被 N 整除的 FORTRAN 表达式为 。 A. (M/M)=0 B. (M MOD N).EQ.0 C. (M/N).EQ.0 D. MOD(M,N).EQ.0 12.以下关于接口块的说法中,不正确的是 。 A.通知编译程序主调程序调用过程时所需要的接口信息。 B. 可用于重载赋值 C. 接口块中可以包含可执行语句 D.可用于自定义运算符 13.以下关于 FORTRAN90中有关哑元(形参)、实元(实参)说法中,不正确的是 A.实元和哑元个数一定要相等 B.实元和哑元个数可以不相等 C.哑元可以用可调数组 D.哑元可以用假定形状数组 14.下列关键字中不能用于说明变量属性的是 。 A.SAVE B.OPTIONAL C.CYCLE D.INTENT 15.以下关于派生类型的说法中,不正确的是 。 A. 派生类型说明中,不能有任何可执行语句 B. 可将一个派生类型变量的值整体赋给另一个派生类型变量 C. 派生类型成员为字符型时,长度可以不确定 D. 派生类型成员可以是自身同类型的指针