资源描述
. .
FORTRAN程序设计复习题
一、 选择题
B (1)以下各FORTRAN表达式中合法的是
A) S+T*2P >= 0.0B) .NOT. (A*B+C)
C) A2+B2/(C+D) <= 0.0 D) (A+B).NOT.A*B.GT.0.0(.NOT.只跟一个表达式)
C(2)数学式(3/5)ex+y的FORTRAN表达式是
A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/5.0
C) (3/5)*EXP(X+Y) D) (3.0/5.0)EXP(X+Y)
D(3)以下FORTRAN77表达式中不合法的是
A) A.GT.B.EQV.C.GT.D B) A.AND.B.AND.C.AND.D
C).NOT.(X.LE.0.0) D) A.LT.B.LT.C.LT.D
D(4)以下表达中不正确的选项是
A) FORTRAN子程序可以单独编译
B) 对一个FORTRAN源程序进展编译和连接无误后可生成可执行文件
C) 即使编译和连接都正确无误,FORTRAN程序运行时仍可能出错D) FORTRAN连接的主要任务是把函数库中的函数翻译成机器指令(正确描述:主要任务为连接目标文件)
B (5)在以下FORTRAN77运算符中,优先级最高的是
A) .AND. B) .NOT. C) .OR. D) .EQ.
B(6)FORTRAN表达式"6/5+9/2**3/2"的值为
A) 33 B) 1 C) 5 D) 3
A(7)以下FORTRAN77 表达式中,合法的是:A) 0.0.LE.X.AND..NOT.X.GE.10.0 B) 0.0.GE.X.LT.10.0
C) 0.0.LE.X.GE.10. D) 10.0.LE.X.OR..AND.X.GT.0.0
提示:A〕相当于0.0.LE.X .AND.〔.NOT.〔X.GE.10.0 〕〕
D(8)关于编译一个FORTRAN源程序文件,以下说法中错误的选项是
A) 允许编译只有一个主程序而没有子程序的源文件
B) 允许编译有多个子程序的源文件
C) 允许编译只有一个子程序而没有主程序的源文件
D) 允许编译有多个主程序的源文件
C(9)在FORTRAN77源程序中,续行标志符必须放在
A) 第1列 B) 第1-6列 C) 第6列 D) 第5列
D(10)以下关于"SUBROUTINE MAP(X,Y)"语句行的表达中,不正确的选项是
A) 这是子程序的第一个语句 B) 字符串"MAP"是子程序名
C) 变量X是子程序的形参 D) 子程序执行后,MAP将返回整型数据
提示:子程序无返回值, 自定义函数才有〕
A(11)FORTRAN表达式"2/4+0.5"的值是
A) 0.5 B)1 C) 1.0 D) 0
提示:2/4默认等于整型,0.5=?0.0
D(12)FORTRAN表达式"MOD(4.9,1.3)"的值是A)1.3 B)0.0 C)4.9 D)1.0
A(13以下FORTRAN运算符中,优先级最低的是A〕逻辑运算符.AND. B〕算术运算符*C)关系运算符 >= D)算术运算符+
A (14以下语句函数的定义中正确的选项是A〕F(X,Y)=(X+Y)/(X*Y)+7.0B〕FUNCTIONFUN(I,J,K)=3*I+2*J+0.5*K
C〕H(A,B,C(I))=SIN(A)+SIN(B)+C(I)D)S(A,B,C)=A*B+S(A*A,B,C)
B〔15以下标识符中,不属于FORTRAN常量的是A〕.TRUE. B〕FALSE C〕ˊROOT=ˊ D〕ˊ123.0ˊ
B〔16〕"整型变量M能被整型变量K整除"的FORTRAN77表达式是A〕MOD(M,K)=0 〔MOD(M,K)= =0〕B〕M-M/K*K .EQ.0C〕MOD(K,M)=0 D〕MOD(M,K)=0 == .TRUE.
C〔17〕设有以下数组说明语句:
REAL:: A(1:10,-1:10)该数组说明语句定义了数组A中的元素个数为A〕100 B〕110 C〕120 D〕121
A(18)按隐含规那么〔默认为整型〕,语句
IP=3.1415926
执行之后,IP的值是
A) 3 B) 3.1416 C) 3.141592 D)3.141593
D (19)以下数据中,不符合 FORTRAN常量表示法的是
A) -25.6 B) 2.758D3 C)‘FOOT’‘=’ D) TRUE
C(20)设C是复型变量,A与B为有定义的实型变量,以下赋值语句中合法的是
A) C=A+BB) C=(3.5,1.5**2)
C) C=(2.0,3D-2)D) C=(A+B,A-B)
B(21)有矩阵(数组)
以下DATA语句中正确的选项是
A) DATA B/4*1.0,4*2.0/B) DATA((B(I,J), J=1,4), I=1,2)/4*1.0, 4*2.0/
C) DATA B/4*(1.0,2.0)/D) DATA((B(I,J),I=1,2), J=1,4)/4*1.0, 4*2.0/
C (21)在使用DO循环及循环嵌套时,以下表达中正确的选项是
A) 不仅可以从循环体内转到循环体外,也可以从循环体外转到循环体内
B) 外循环与内循环的DO循环控制变量可以不同.也可以一样
C) 可以从循环体内转到循环体外,但不能从循环体外转到循环体内
D) DO循环控制变量在循环体内可以再赋值,也可以被引用
B (22)在FORTRAN表达式中,各种运算的顺序是
A) 逻辑运算,关系运算,算术运算B) 算术运算,关系运算,逻辑运算
C) 关系运算,逻辑运算,算术运算D) 关系运算,算术运算,逻辑运算
D(23)赋值语句
X=4**(6/12)=4**0=1.0
执行后,实型变量X的值是
A) 2 B) 2.0 C) 1 D) 1.0
D (24)为了保证正确出数据,格式编辑符Ew.d中w与d的关系应该是
A) w>d B) w>d+2 C) w>d+4 D) w>d+6
C(25)设以下各语句中用到的数组都已定义,那么以下语句中正确的选项是
A) READ(*,*)(I,A(I),I=1,10)B)READ(*,*)(B,(I,J),I=1,10,J=1,10)
C) READ(*,*)N,(A(I),I=1,N)D) READ(*,*)(I=1,10,A(I))
A (26)以下DO语句中,不正确实现循环的是(I-N规那么:I-N会被视为整型)
A) DO 10 S=-1.6,-5.3,-0.4 B) DO 10 K=-1.6,-5.3,-0.4
C) DO 10 S=-5.3,-1.6,-0.4 D) DO 10 K=1.6,5.3,-1.4
D (27)以下说法中正确的选项是
A) 块IF构造中的THEN块或ELSE块不能是空块
B) 块IF构造中至少有一个ELSE IF 语句或ELSE语句
C) 每个ELSE IF 语句要有一个对应的END IF语句
D) 一个块 IF 构造中只能有一个END IF语句
A (28)以下数组说明语句中正确的选项是
A) INTEGER A(-1:5,0:6)B) REAL M(10:5)
C) DOUBLE Y(1:N+1) D) DOUBLE Z(14)
B (29)设有一个FORTRAN77子程序如下:
SUBROUTINE SS(X,Y,S,T)
S=X+Y〔S,T为传出,即需要输出的〔相当于求圆的面积中的area〕,只能 T=X*Y为确定的数;X,Y为传入〔相当于radius〕,可为表达式〕
END
调用上述子程序的正确语句是
A) CALL SS(2.4,W*W,5,5.9,Z)〔多了一个〕
B) CALL SS(0.0,4.2,P,Q,R) 〔多了一个〕
C) CALL SS(F,G,7.2,5.1)
D) CALL SS(4.4*I,5.8*J,C,D)〔I,J可先赋值〕
A (30)在以下语句函数的定义中正确的选项是
A) F(X,Y)=(X+Y)/(X*Y)+7.0B) FUNCTION(I,J,K)=3*I+2*J+0.5*K
C) H(A,B,C(I))=SIN(A)+SIN(B)+C(I)D) S(A,B,C)=A*B+S(A*A,B,C)
B(31)MON语句的功能是
A) 给同一程序模块中的假设干变量分配同一存储单元
B) 给不同程序模块中的变量分配一样的存储单元
C) 给程序中任意两个变量分配一样的存储单元
D) 给同一程序模块中的不同变量分配一样的存储单元
B (32)以下表达式中值为整数4的是
A) SQRT(16.0)B)27/6 C) 16**0.5D) 4*1.0
C(34)语句K=2+3.0**2/2执行后,整型变量 K的值是
A)6.5B) 5C) 6D)7
C (36)适用于字符型I/O的 FORTRAN77格式编辑将是
A) Fw.d B) Iw.d C) A D) Gw.d
D (37)给定子例行程序如下
SUBROUTINE SUB(K,A)
B=K+2〔K为整型,B〕错误;A不是整型,A〕错误;K为传入,可为表达式,
A=A+BA为传出,不能为表达式〕
END
以下调用语句中正确的选项是
A) CALL SUB(N,N) B) CALL SUB(X,X)
C) CALL SUB(N+2,X)D) CALL SUB(N,X+3)
C(38) 以下FORTRAN语句中,正确的选项是A) READ(*,*) (N,A(K),K=1,N) B) WRITE(*,*) (M(K,J),K=1,10, J=1,10)
C) WRITE(*,*) (10,A(K),K=1,10) D) DATA A,B,C/2*0.0/
C (39)对于以下给定的FORTRAN说明和赋初值语句:
INTEGER A(2,2)
DATA A/3,4,5,6/
数组元数A(2,1)的初值为 A) 3 B) 5 C) 4 D) 6
C(40)以下对公用区的说明语句中错误的选项是 A) MON A(5), B B) MON/AB/ A(5), B
C) MON AB/A(5), B/ D) MON//A(5), B
D (41)以下各逻辑IF语句中正确的选项是
A) IF(X<0.0) THEN 10
B) IF(X>=0.0).AND.(X.LT.1.0)Y=2*X+1.0
C) IF(0.0>=X<=1.0)Y=2*X+1.0
D) IF(X>= 0.0.AND.X <=1.0)Y=2*X+1.0
二、阅读题
1、阅读以下FORTRAN程序:
program example
real a,b,c
a=1.0
b=2.0
c=3.0
write(*,"(3(F5.2))") a,b,c
end
程序运行的结果是:1.00 2.00 3.00
2、阅读以下FORTRAN程序:
program example
integer :: a=1
integer :: b=2
real :: c
c=a/b
write(*,"(F5.2)") c
end
程序运行结果是:0.00
3、阅读以下FORTRAN程序:
program example
implicit none
integer rain, windspeed
write(*,*) "Rain:"
read(*,*) rain
write(*,*) "Wind:"
read(*,*) windspeed
If ( rain>=500 .or. windspeed >=10 ) then
write(*,*) "停顿上班上课"
else
write(*,*) "照常上班上课"
end if
stop
end
运行上述程序时,如果从键盘输入
Rain:
505<回车>
Wind:
8<回车>
那么最后输出的结果为:停顿上班上课
4、阅读以下FORTRAN程序:
program example
implicit none
real a,b,ans
character operator
read(*,*) a
read(*,"(A1)") operator
read(*,*) b
select case(operator)
case('+')
ans = a+b
case('-')
ans = a-b
case('*')
ans = a*b
case('/')
ans = a/b
case default
write(*,"('Unknown operator ',A1)") operator
stop
end select
write(*,"(F6.2,A1,F6.2,'=',F6.2)") a,operator,b,ans
stop
end
运行上述程序时,如果从键盘输入
100<回车>
?<回车>
200<回车>
那么最后输出的结果为: Unknown operator ?
5、阅读以下FORTRAN程序:
program example
implicit none
integer i
integer strlen
integer, parameter :: key = 2
character(len=20) :: string
write(*,*) "Encoded string:"
read(*,*) string
strlen = len_trim(string)
do i = 1, strlen
string(i:i) = char( ichar(string(i:i)) + key )
end do
write(*,"('String:',A20)") string
stop
end
BCDIJK<回车>
那么最后输出的结果为: DEFKLM
6、阅读以下FORTRAN程序:
programexample
implicit none
integer i,j
do i=1, 2
do j=2, 3, 2
write(*, "(I2,I2)") i,j
end do
write(*,*) "another circle"
end do
stop
end
程序运行的结果是:1 2
another circle
2 2
another circle
〔按输出格式,1、2前均有一空格。假设题目无特殊说明,不需表达出;假设有说明,那么空格用“□〞表示〕
7、阅读以下FORTRAN程序:
program example
implicit none
integer :: dest = 6
integer floor
do floor=1, dest
if ( floor==2 .or. floor==4 ) cycle
write(*,*) floor
end do
stop
end
程序运行的结果是:1
3
5
6
8、阅读以下FORTRAN77程序:
program example
implicit none
integer, parameter :: limit=10
integer counter
integer :: ans = 0
counter = 1
do while( counter <= limit )
ans = ans + counter
counter = counter + 2
end do
write(*,*) ans
stop
end
程序运行的结果是:25
9、阅读以下FORTRAN程序:
program example
implicit none
integer, parameter :: students = 5
integer :: student(students) = (/ 80, 90, 85, 75, 95 /)
integer i
do while( .true. )
write(*,*) "Query:"
read(*,*) i
if ( i<=0 .or. i>students ) exit
write(*,*) student(i)
end do
stop
end
运行上述程序时,如果从键盘输入
3<回车>
那么最后输出的结果为: 85
10、阅读以下FORTRAN程序:
program example
implicit none
integer, parameter :: L=2, M=3, N=2
real :: A(L,M) = (/ 1,2,3,4,5,6/)
real :: B(M,N) = (/ 1,2,3,4,5,6/)
real :: C(L,N)
integer :: i,j,k
do i=1,L
do j=1,N
C(i,j) = 0.0
do k=1,M
C(i,j) = C(i,j)+A(i,k)*B(k,j)
end do
end do
end do
do i=1,L
write(*,*) C(i,:)
end do
stop
end
程序运行的结果是:22 49
28 64
11、阅读以下FORTRAN程序:
program example
implicit none
integer :: i,j
loop1: do i=1,3
loop2: do j=1,3
if ( i==3 ) exit loop1
if ( j==2 ) cycle loop2
write(*, "('(',i2,',',i2,')')" ) i, j
end do loop2
end do loop1
stop
end
程序运行的结果是:(1,1)
(1,3)
(2,1)
(2,3)
12、阅读以下FORTRAN程序:
program example
implicit none
real :: a=1.0
call ShowInteger(a)
call ShowReal(a)
stop
end
subroutine ShowInteger(num)
implicit none
integer :: num
write(*,*) num
return
end
subroutine ShowReal(num)
implicit none
real :: num
write(*,*) num
return
end
程序运行的结果是:随机数
1.000000
13、阅读以下FORTRAN程序:
program example
implicit none
integer, parameter :: row = 2
integer, parameter :: col = 2
integer :: m(row, col)
integer r
integer c
data ((m(r,c), r=1, 2), c=1,2) /1,2,3,4/
write(*,"(I3,I3,/,I3,I3)") (( m(r,c), c=1,2 ), r=1,2)
stop
end
程序运行的结果是:1 3
2 4
14、阅读以下FORTRAN程序:
program ex0805
implicit none
integer :: a = 1
integer :: b = 2
write(*,*) a,b
call add(a)
call add(b)
write(*,*) a,b
stop
end
subroutine add(num)
implicit none
integer :: num
num = num+1
return
end
程序运行的结果是: 1 2
2 3
15、阅读以下FORTRAN程序:
program example
implicit none
integer, parameter :: size=10
integer :: a(size) = (/ 5,3,6,4,8,7,1,9,2,10 /)
integer :: i,j
integer :: t
do i=1, size-1
do j=i+1, size
if ( a(i) > a(j) ) then
t=a(i)
a(i)=a(j)
a(j)=t
end if
end do
end do
write(*,"(10I4)") a
stop
end
程序运行的结果是: 1 2 3 4 5 6 7 8 9 10
16、阅读以下FORTRAN程序:
program example
implicit none
real :: a=1
real :: b=2
real, external :: add
write(*,*) add(a,b)
stop
end
function add(a,b)
implicit none
real :: a,b
real :: add
add = a+b
return
end
程序运行的结果是:3.000000(类似的题目,写3.0亦可,但不可写3)
17、阅读以下FORTRAN程序:
program example
implicit none
integer :: a,b
mon a,b
a=1
b=2
call Showmon()
write(*,*) a, b
end
subroutine Showmon()
implicit none
integer :: num1, num2
mon num1, num2
write(*,*) num1, num2
return
end
程序运行的结果是:1 2
1 2
18、阅读以下FORTRAN程序:
module global
implicit none
real a,b
mon a,b
end module
program example
use global
implicit none
a=1.0
b=2.0
call sub()
end program
subroutine sub()
use global
implicit none
write(*,*) a,b
return
end subroutine
程序运行的结果是:1.000000 2.000000
19、阅读以下FORTRAN程序:
INTEGER A(3,3)
DO K=1,3
DO L=1,3
A(K,L)=K*10+L
END DO
END DO
WRITE(*,'(1X,3I3)') A
END 程序运行的结果是:11 21 31
12 22 32
13 23 33
20、阅读以下FORTRAN程序:
INTEGER F
F(X,Y)=X+Y
A=-2.5
B=4.0
B=1.0+F(A,B)
WRITE(*,20) B
20 FORMAT(1X,F4.1)
END
程序运行的结果是: 2.0
21、阅读以下FORTRAN程序:
X=0
DO L=10, 5, 15
X=X+1.0
END DO
END
程序运行时执行循环体的次数是:0
22、阅读以下FORTRAN77程序:
DIMENSION M(4,4)
DATA M/1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/
DO I=1,4
WRITE (*,100)(M(I,J),J=1,I)
END DO
100 FORMAT(1X,4I2)
END
程序运行的结果是:1
2 6
3 7 1
4 8 2 6
23、阅读以下FORTRAN程序:
CHARACTER(LEN=10) A
CHARACTER(LEN=6) B
DO I=1,10
A(I:I)=' '
END DO
A(1:5)='ABCDE'
B='FGHIJK'
A(4:9)=B
WRITE(*,100) A
100 FORMAT(1X,A)
END
程序运行结果是:ABCFGHIJK
24、 阅读以下FORTRAN程序:
X=0.0
Y=2.0
CALL SUB(X,Y,Z,3.0)
WRITE(*,'(1X,3F5.1)')X,Y,Z
END
SUBROUTINE SUB(A,B,X,Z)
A=A+1
B=B+2.0
Y=1.0
X=X+Y
END
程序运行结果是:1.0 4.01.0
25、 阅读以下FORTRAN程序:
INTEGER N(20)
DO M=1,20
N(M)=0
END DO
K=5
DO M=1,K
DO J=1,K
N(J)=N(M)+1
END DO
END DO
WRITE(*,*)N(K)
END
程序运行的结果是:9
26、 阅读以下FORTRAN程序:
MON //M(5),N(4)
CALL FIB
WRITE(*,'(1X,4I3)') N
END
SUBROUTINE FIB
MON //J(5),K(4)
DO I=1,4
K(I)=J(I+1)-J(I)
END DO
END
BLOCK DATA
MON //K(5),L(4)
DATA K/8,7,10,4,13/
END
程序运行的结果是:-1 3 -6 9
27、阅读以下FORTRAN程序:
N=0
DO K=30,0,-2
DO L=-10,10,1
N=N+1
END DO
END DO
WRITE(*,*) N
END
程序运行结果是::336
28、阅读以下FORTRAN程序:
READ(*,*) N
X=1.0
IF (N.GE.0) X=2*X
IF (N.GE.5) X=2*X+1.0
IF (N.GT.15) X=3*X-1.0
WRITE(*,*) X
END
运行上述程序时,如果从键盘输入
15<回车>
那么最后输出的X值为 :5.000000
29、阅读以下FORTRAN程序:
DIMENSION M(3,4)
DATA M/4*2,4*1,4*-1/
N=0
DO K=1 ,4
N=N+M(1,K)
END DO
WRITE(*,*) N
END
运行上述程序后,输出的N的值为 4
30、阅读以下FORTRAN77程序:
READ(*,*) Y
IF (Y.LE.0.0) THEN
Z=0 .0
ELSE IF ((Y < 5.0).AND.(Y /= 2.0)) THEN
Z=1/(Y+2)
ELSE IF (Y <= 10.0) THEN
Z=1/Y
ELSE
Z=10.0
END IF
WRITE (*,*)Z
END
在执行上述程序时,由键盘输入
2.0
最后输出的Z值为0.5000000〔写0.5即可,不同的编译器,输出的“0〞的个数可能会不同〕
三、编程题
教科书中:
第四章—第九章的习题。
. .word..
展开阅读全文