FORTRAN程序设计复习题及答案.docx
《FORTRAN程序设计复习题及答案.docx》由会员分享,可在线阅读,更多相关《FORTRAN程序设计复习题及答案.docx(24页珍藏版)》请在冰豆网上搜索。
FORTRAN程序设计复习题及答案
FORTRAN程序设计复习题
一、选择题
B
(1)下列各FORTRAN表达式中合法得就是
A)S+T*2P 〉=0、0 B)、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) 33B)1C)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)下列关于"SUBROUTINEMAP(X,Y)”语句行得叙述中,不正确得就是ﻫA)这就是子程序得第一个语句 B)字符串"MAP”就是子程序名ﻫC)变量X就是子程序得形参D) 子程序执行后,MAP将返回整型数据
提示:
子程序无返回值, 自定义函数才有)
A(11)FORTRAN表达式"2/4+0、5"得值就是
A)0、5 B)1 C)1、0D)0
提示:
2/4默认等于整型,0、5=》0、0
D(12)FORTRAN表达式"MOD(4、9,1、3)"得值就是
A)1、3 B)0.0 C)4、9D)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、 0ﻫC)MOD(K,M)=0 D)MOD(M,K)=0 ==、TRUE、
C(17)设有下列数组说明语句:
REAL:
:
A(1:
10,-1:
10)ﻫ该数组说明语句定义了数组A中得元素个数为ﻫA)100B)110 C)120D)121
A(18)按隐含规则(默认为整型),语句
IP=3、1415926
执行之后,IP得值就是
A)3 B)3.1416C)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+BﻩﻩﻩﻩB)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)DATAB/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)DO10S=—1、6,-5、3,-0、4 ﻩﻩB)DO10K=—1、6,-5、3,-0、4
C)DO10S=-5、3,-1、6,—0、4 D)DO10K=1、6,5、3,-1、4
D(27)下列说法中正确得就是
A)块IF结构中得THEN块或ELSE块不能就是空块
B)块IF结构中至少有一个ELSEIF语句或ELSE语句
C) 每个ELSEIF语句要有一个对应得ENDIF语句
D) 一个块 IF结构中只能有一个END IF语句
A (28)下列数组说明语句中正确得就是
A)INTEGERA(—1:
5,0:
6)ﻩB)REAL M(10:
5)
C)DOUBLEY(1:
N+1) ﻩﻩD)DOUBLE Z(14)
B(29)设有一个FORTRAN77子程序如下:
SUBROUTINESS(X,Y,S,T)
S=X+Y(S,T为传出,即需要输出得(相当于求圆得面积中得area),只能 T=X*Y为确定得数;X,Y为传入(相当于radius),可为表达式)
END
调用上述子程序得正确语句就是
A)CALLSS(2、4,W*W,5,5、9,Z)(多了一个)
B) CALL SS(0、0,4、2,P,Q,R) (多了一个)
C)CALLSS(F,G,7、2,5、1)
D)CALLSS(4、4*I,5、8*J,C,D)(I,J可先赋值)
A(30)在下列语句函数得定义中正确得就是
A)F(X,Y)=(X+Y)/(X*Y)+7、0ﻩﻩB)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、5ﻩﻩD)4*1、0
C(34)语句K=2+3、0**2/2执行后,整型变量K得值就是
A)6、5ﻩﻩﻩB)5ﻩﻩﻩC)6ﻩﻩD)7
C (36)适用于字符型 I/O得FORTRAN77格式编辑将就是
A)Fw、dﻩﻩB)Iw、dﻩﻩC)AﻩﻩD) Gw、d
D(37)给定子例行程序如下
SUBROUTINESUB(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)CALLSUB(N+2,X)ﻩD)CALLSUB(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)DATAA,B,C/2*0、0/
C (39)对于下列给定得FORTRAN说明与赋初值语句:
ﻫ INTEGERA(2,2)
DATAA/3,4,5,6/
数组元数A(2,1)得初值为
A)3 B)5 C)4 D)6ﻫC (40)下列对公用区得说明语句中错误得就是
A) MONA(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) THEN10
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程序:
programexample
implicit none
integerrain, windspeed
write(*,*) "Rain:
"
read(*,*)rain
write(*,*)"Wind:
"
read(*,*)windspeed
If (rain〉=500、or、windspeed 〉=10 ) then
write(*,*)"停止上班上课"
else
write(*,*)"照常上班上课”
endif
stop
end
运行上述程序时,如果从键盘输入
Rain:
505<回车>
Wind:
8<回车>
则最后输出得结果为:
停止上班上课
4、阅读下列FORTRAN程序:
programexample
implicit none
reala,b,ans
character operator
read(*,*)a
read(*,”(A1)")operator
read(*,*)b
selectcase(operator)
case(’+')
ans=a+b
case('—')
ans=a-b
case('*')
ans= a*b
case(’/’)
ans= a/b
casedefault
write(*,”(’Unknownoperator',A1)”)operator
ﻩstop
endselect
write(*,"(F6、2,A1,F6、2,’=’,F6、2)") a,operator,b,ans
stop
end
运行上述程序时,如果从键盘输入
100<回车>
?
<回车>
200<回车>
则最后输出得结果为:
Unknownoperator ?
5、阅读下列FORTRAN程序:
programexample
implicitnone
integeri
integerstrlen
integer, parameter:
:
key =2
character(len=20):
:
string
write(*,*) ”Encodedstring:
"
read(*,*)string
strlen=len_trim(string)
doi=1, strlen
string(i:
i)=char(ichar(string(i:
i)) +key )
enddo
write(*,"('String:
',A20)”)string
stop
end
BCDIJK<回车>
则最后输出得结果为:
DEFKLM
6、阅读下列FORTRAN程序:
programexample
implicit none
integeri,j
doi=1,2
do j=2,3, 2
write(*, "(I2,I2)”)i,j
enddo
ﻩwrite(*,*)"anothercircle"
enddo
stop
end
程序运行得结果就是:
1 2
anothercircle
22
anothercircle
(按输出格式,1、2前均有一空格。
若题目无特殊说明,不需表达出;若有说明,则空格用“□”表示)
7、阅读下列FORTRAN程序:
programexample
implicit none
integer:
:
dest=6
integerfloor
dofloor=1, dest
if (floor==2、or、floor==4)cycle
write(*,*)floor
enddo
stop
end
程序运行得结果就是:
1
3
5
6
8、阅读下列FORTRAN77程序:
program example
implicitnone
integer,parameter:
:
limit=10
integer counter
integer :
:
ans=0
counter= 1
dowhile(counter〈=limit )
ans=ans +counter
counter =counter+2
enddo
write(*,*)ans
stop
end
程序运行得结果就是:
25
9、阅读下列FORTRAN程序:
programexample
implicitnone
integer, parameter :
:
students= 5
integer :
:
student(students)=(/80,90,85, 75,95/)
integeri
do while(、true、)
write(*,*)”Query:
"
read(*,*)i
if(i〈=0、or、i〉students)exit
write(*,*) student(i)
enddo
stop
end
运行上述程序时,如果从键盘输入
3〈回车〉
则最后输出得结果为:
85
10、阅读下列FORTRAN程序:
programexample
implicitnone
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
doi=1,L
doj=1,N
C(i,j)= 0、0
dok=1,M
ﻩC(i,j)= C(i,j)+A(i,k)*B(k,j)
enddo
enddo
enddo
do i=1,L
write(*,*)C(i,:
)
enddo
stop
end
程序运行得结果就是:
2249
28 64
11、阅读下列FORTRAN程序:
programexample
implicit none
integer :
:
i,j
loop1:
doi=1,3
loop2:
doj=1,3
if(i==3) exitloop1
if(j==2)cycleloop2
write(*, "(’(',i2,’,’,i2,’)’)" )i, j
enddoloop2
enddoloop1
stop
end
程序运行得结果就是:
(1,1)
(1,3)
(2,1)
(2,3)
12、阅读下列FORTRAN程序:
program example
implicitnone
real :
:
a=1、0
call ShowInteger(a)
callShowReal(a)
stop
end
subroutineShowInteger(num)
implicit none
integer :
:
num
write(*,*)num
return
end
subroutine ShowReal(num)
implicit none
real:
:
num
write(*,*)num
return
end
程序运行得结果就是:
随机数
1、000000
13、阅读下列FORTRAN程序:
programexample
implicitnone
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
24
14、阅读下列FORTRAN程序:
programex0805
implicitnone
integer :
:
a=1
integer:
:
b=2
write(*,*)a,b
calladd(a)
calladd(b)
write(*,*) a,b
stop
end
subroutineadd(num)
implicitnone
integer:
:
num
num=num+1
return 。
。
end
程序运行得结果就是:
1 2
23
15、阅读下列FORTRAN程序:
programexample
implicitnone
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
doj=i+1,size
if( a(i)>a(j))then
ﻩ t=a(i)
a(i)=a(j)
a(j)=t
ﻩendif
ﻩend do
enddo
write(*,"(10I4)") a
stop
end
程序运行得结果就是:
12 3 45 6 7 8 9 10
16、阅读下列FORTRAN程序:
programexample
impl