习题二
一、问答题
1. 给出下面变量名称,哪些是合法变量?哪些是非法变量?说明原因。
Count、num_2、x&y、4x+5y、china-suzhou、$us、AbCdE、Mr.bai、t5、 _another、school_class_25、#125、2002Y、π、β、A01/02、alpha、date(1) 1. 判定下面整数,指出哪些是合法整数,哪些是非法整数?说明原因。
-0、+ 215、$125、3,245,895、5.3245、5#384、-524_3、#5DFE、 23-345、16#1A2B、38#ABCD、8#275_2、+327890、4 #321 2. 判定下面实数,指出哪些是合法实数,哪些是非法实数?说明原因。
-0E2、45.2345E3.5、-5489E25_8、-.2345E-35、$185.45E、+ 2.753425E24_3、 58D85、+0.E-0、-00000.001E5、5,443,223.44、-12 34E+2、+ 18.5E 18、2.5E42
习题三
一、选择题
1.下面是Visual Fortran中正确的表达式是 。
(A)A*COS(X)+∣B∣ (B)2*EXP(2*X)/SQRT(16.0) (C)B-4AC (D)MOD(24.5,0.5) 2.下面算术赋值语句中正确的语句是 。 (A)M*N=(X-Y)/Z (B)+R=A+B/C (C)X=Y=Z-1.0 (D)Y=A*B/C/D 3.算术表达式1/3+2/3的值为 。
(A) 二、问答题
1. 将下列代数式用Visual Fortran表达式描述:
Ax0?By0?C2
0 (B) 1 (C) 0.99999999 (D)值不确定
1y?e sin① 2 2 ② 2 z
A?B
③ 4sin3A-3sinA+sin3A ④
sin(p?a)sin(p?b)sin(p?c)sinp 2.执行下列赋值语句后,变量中的值。变量的类型遵循I—N规则。设I=6,K=2,N=-3,
T=7.5,Y=1.5
①L=T/Y/2.0 2 ②M=I/K*Y+1.5 6 ③Z=I*K+Y 13.5 ④A=I**K/N+T/Y -7.0
习题四
一、运行程序题
1. 判断下列输入输出语句是否正确?
(1) PRINT*, ′X=′, X, ′X*Y**2=′, X*Y**2 (2) WRITE ( * , * ) A, B, NO, ′Y=′, Y (3) READ*, N, M, 5.0K (4) WRITE ( *,22 ) A, B, I, K, C 22 FORMAT ( 4X, 2F5.0, 2I5 ) (5) WRITE ( 8,33 ), X, Y, M, Z, N, 33 FORMAT ( 4X, 2F5.0 2I5 ) (6) READ ( *,44 ) NF, G, H, I, J
44 FORMAT ( 4X, I5, 2 ( F6.2, I5 ) )
2. 已知整型变量i、j、k、l、m、n,执行下面表控输入语句:
READ*, i,j READ*, k,l,m READ*, n
按以下格式输入8个数据: 25
26 50 45 57 43 27 28
输入语句执行后,每个变量取何值? i=25、j=26、k=27、l=28、m=0、n=0 3. 写出输出结果,设I=56,J=1274,K=5126
WRITE ( *,100 ) I, J, K (1) 100 FORMAT ( 1X, I4 ) (2) 100 FORMAT ( 1X, 2I5 )
56 1274 5126
(3) 100 FORMAT ( 1X, 2 ( I5,2X ) / )
56 1274 5126
4. 写出输出结果,设I=512,J=612,A=18.34,B=-21.4,C=112.463,D=-2174.573
WRITE ( *,100 ) I,J,A,B,C,D
(1) 100 FORMAT ( 1X,I5,2X,2 ( F10.2,2X ),F12.1 ) 512 0.00E+00 18.34 -2.14 112.46 -2174.57
(2) 100 FORMAT ( 3X,2 ( I4,2X ),2 ( F10.2,2X ),′NEW′ ) 512 0.00E+00 18.34 -2.14 NEW
112.46 -2174.57 NEW 5. 有读入语句:
READ ( *,100 ) I,J,B
设输入的值为:I=63,A=76.5,J=122,B=156.783。如用下面的FORMAT语句应如何输入数据。
(1) 100 FORMAT ( I4,F6.2,I5,F8.2 ) (2) 100 FORMAT ( I4,2X,F6.2,I5,F8.2 ) (3) 100 FORMAT ( 1X,2 ( I4,2X,F10.2 ) ) (4) 100 FORMAT ( I4,F6.2/I5,F8.2 ) (5) 100 FORMAT ( I4/F6.2/I5/F8.2 ) (6) 100 FORMAT ( I5,F8.1 ) 6.IMPLICIT NONE INTEGER::I,J,K READ *,I,J K=I/J
PRINT *,?K=?,K
END
当输入9,2时,输出结果为 K=4 。 7.IMPLICIT NONE REAL::I,J,K READ(*,*)I,J K=I/J
WRITE(*,*)?K=?,K
END
当输入9,2时,输出结果为 K=4.500000 。
8.下面是一些非法的输入输出语句和格式说明语句。说明其非法原因。
READ * i,j,k READ 10 i,j,k READ *,?i=?,i,?j=?,j READ(*,10) i,j,125
READ(*,?(“i=”,I3,“j=”,I3)?) i,j READ(?(I3,I3)?,*) i,j
10 FORMAT(1X,I3,:,I3,:,I3)
PRINT * i,j,k PRINT 10 i,j,k WRITE *,?i=?,i,?j=?,j WRITE(20,*) i,j,125
PRINT(*,?(“i=”,I3,“j=”,I3)?) i,j
WRITE(?(I3,I3)?,*) i,j
20 FORMAT(1X,I3,I3 I3) 9.给定下面READ和FORMAT语句: READ 100,i,j,k,m,n
100 FORMAT(I2,I3,2X,I2,1X,I4.1,I3) 执行READ语句,输入以下5组数据:
12345678901234567890↙ 1?322?43??565?768?78↙ ?12,3?43?7??,2?3455↙ ??1232;45A18?93?215↙ 1?23;324;445;555;777↙
READ语句执行后,每组i,j,k,m,n的值分别是多少? 10.给定下面READ和FORMAT语句: READ 100,a,b,c
100 FORMAT(F5.2,F5.1,E8.3) 执行READ语句,输入以下5组数据:
12345678901234567890↙ 123,456789012,345890↙ 1?322?43??565?E+?28↙ 123E2343?7??2?3455↙ 1.23245.E3.1893?215↙
READ语句执行后,每组a,b,c的值分别是多少?
11.已知:i=25,j=-125,k=-4725,m=-31500,a=48.57,x=-1.5E+11,y=158.895E-11。
给定输出语句:WRITE(*,100)i,a,j,b,k,m,x,y 对下面不同的FORMAT语句,写出输出结果:
① 100 FORMAT(1X,I3,1X,F5.2,1X,I4,1X,F9.2,I5,I6,E12.3,E12.3E3) ② 100 FORMAT(3X,I4,1X,F9.2,1X,I4,1X,F9.2,2I5,2E12.3)
③ 100 FORMAT(??i=?,I3,?a=?,F5.2,?j=?,I4,?b=?,F9.2,?k=?,I5,?m=?,I6,
?x=?,E12.3,?y=?,E12.3E3)
④ 100 FORMAT(2(2X,I4,2X,F9.2),2I5,2E12.3)
⑤ 100 FORMAT(1X,I3,1X,F5.2/1X,I4,1X,F9.2/I5,I6,E12.3,E12.3E3) 12.已知:i=315,j=512,a=43.57,b=-15.9,c=123.456,d=-5231.573。
给定输出语句:WRITE(*,100)i,j,a,b,c,d 对下面不同的FORMAT语句,写出输出结果: ① 100 FORMAT(1X,I4,2X,I5,2X,2(F7.2,2X),F10.1) ② 100 FORMAT(1X,2(I4,2X),2(F7.2,2X),?OLD?) 13.给定下面程序:
READ 10,i,j,k,m,n
10 FORMAT(1X,I3, T5,I3,I4,TL8,I2,TR5,I3)
PRINT *,i,j,k,m,n
END
程序执行时,输入数据:1234567890987654321↙ 程序执行后,变量i,j,k,m,n的值是什么? 二、填空题
下面程序是求任意两个整型数M、N的和,要求输出形式为:
M+N=和,如M=3,N=8,则输出形式为:M+N= 11。请填空。 IMPLICIT NONE INTEGER::M,N,S READ*,M,N S=M+N PRINT *, ?M+N=? ,S END
习题五
一、选择题
1、已知:A=4.9,B=5.5,C=8.0,L=.FALSE.,则其值为’假’的表达式是 。
A) A 2、以下不合法的Visual Fortran表达式是 。 A) A=B.EQV.C>D D) A.AND.B.AND.C 3、以下能表示条件“X、Y中至少有一个大于0且小于等于10”的逻辑表达式是 。 A) (0 B) (0 4、以下能表示条件“X、Y中至少有一个大于等于10或小于5”的逻辑表达式是 。 A) .NOT. (X>=10.OR.X<5).OR.Y>=10.OR.Y<5 B) (X>=10.OR.X<5).OR.(Y>=10.OR.Y<5) C) (X.OR.Y)>=10.0R.(X.OR.Y)<5 D) (X>=10.AND.X<5).AND.(Y>=10.AND.Y<5) 5、以下正确的逻辑表达式是 。(其中A,B,C,D,X均是数值型变量) A)(A+B).AND. C=X D) (A+B)>C AND (C+D)<0 6、要实现“当X>Y时,Z=X+Y,否则Z=X-Y”。以下能完成该功能的程序段是 。 A) IF (X>Y) Z=X+Y ELSE Z=X-Y B) IF (X>Y) THEN Z=X+Y Z=X-Y C) Z=X-Y IF (X>Y) Z=X+Y D) IF (X>Y) Z=X+Y ELSE Z=X-Y END IF 7、下面程序段中有错误的语句是 。 A) IF A>B THEN B) A=B C) ELSE B=A D) END IF 8、下面程序段中有错误的语句是 。 A) IF (A.GT.B) THEN B) A=B C) ELSE B=A D) END IF 9、下面程序段中有错误的语句是 。 READ *,X A) IF (X<0.0)THEN Y=1.0 B) ELSE IF (X<=10.0) THEN Y=2.0 C) ELSE Y=3.0 D) END IF END IF PRINT *,Y END 10、下面程序段中有错误的语句是 。 LOGICAL:: L A) L=0.1.GT.1.0 B) IF(L==.FALSE.) C=0.0 C) D=1.0-0.1 D) IF (1.0>0.1) D=0.1-1.0 PRINT *,D,C END 二、运行程序题 1、己知整型变量M=3,N=10,K=0,J=0,阅读下面程序段: IF (MOD(M,N)/=0) THEN K=N/M IF (K>M) THEN J=K K=M M=J END IF END IF PRINT *,M,K 其运行结果是: 3 3 。 2、阅读下面程序: IMPLICIT NONE INTEGER::I,J I=2 J=0 IF (I>=2) J=1 IF (J==1) I=J IF (I<2) I=I+1 PRINT *,I,J END 其运行结果是: 2 1 。 3、阅读下面程序: IMPLICIT NONE INTEGER::I,J,K,M I=10 J=20 K=30 M=-32768 IF (I>M) M=I IF (J>M) M=J IF (K>M) M=K PRINT *,M END 其运行结果是: 30 。 4、阅读下面程序: IMPLICIT NONE REAL::X,Y READ *, X IF (X<0.0) THEN Y=0.0 ELSE IF (X<10.0) THEN Y=1.0/X ELSE Y=10.0 END IF PRINT *,Y END 若从键盘输入2.0↙ 则程序的运行结果是: 0.5 。 5、阅读下面程序: IMPLICIT NONE LOGICAL:: L1,L2,L3,L4 L1=.TRUE. L2=.FALSE. L3=.TRUE. L4=.NOT.L2.OR.L1.AND..NOT.L3 PRINT *,L4 END 则运行结果是: T 。 6、阅读下面程序: IMPLICIT NONE LOGICAL::A,B,L A=.FALSE. B=.TRUE. L=.NOT.A.AND.B PRINT *,L END 则运行结果是: T 。 7、阅读下列程序,若运行中的输入值分别为2.5和-1.0,则两次运行结果分别是 。 IMPLICIT NONE LOGICAL::L REAL::X L=.TRUE. READ *,X IF (X<0.) THEN L=.FALSE. ELSE PRINT *,X END IF IF (.NOT.L) PRINT *, -X END 当输入的数值为2.5↙ 则输出结果为: 2.500000 。 当输入的数值为-1.0↙ 则输出结果为: 1.000000 。 8、阅读下面程序: IMPLICIT NONE INTEGER:: X=1,Y=0,A=2,B=2 SELECT CASE(X) CASE(1) SELECT CASE(Y) CASE(10) A=A+1 CASE(1) B=B+1 END SELECT CASE(2) A=A+1;B=B-1 CASE(3) A=A-1; B=B+1 END SELECT PRINT *,‘A=’,A,’B=’,B END 程序运行结果为: A= 2B= 2 。 9、阅读下面程序: IMPLICIT NONE LOGICAL:: P,Q REAL::X=0.0,Y=0.0 READ ( *, ’( 1X,2L4 )’ ) P, Q IF( P ) X = 1.0 IF( Q ) Y = 1.0 PRINT *, X, Y END 当从键盘输入FFTTFFTTFFTT,则X与Y的值为 _0.0 ___0.0__。 10、阅读下面程序: IMPLICIT NONE INTEGER ::A,B,C,X READ *,A, B, C X=A+2+B+C**2 SELECT CASE ( X ) CASE ( : 7 ) PRINT *, “A” CASE ( 8 : 10 ) PRINT *, “B” CASE ( 11: 15 ) PRINT *, “C” CASE ( 16 : ) PRINT *, “N” END SELECT END 若从键盘输入0,1,2↙ 其运行结果为: A ; 若从键盘输入1,2,3↙ 其运行结果为: C ; 若从键盘输入3,2,1↙ 其运行结果为: B 。 11. 给出下列关系表达式和逻辑表达式,判定表达式的值。 25.5>54 F (35+3*8).GE.75 F (2.5,5.7)>(1.2,3.5) 错误的表达式 (25.9,58.4).NE.(58.4,25.9) T ?banana? 12+2*5>20 .AND. .NOT.(?pen?//?s?80) T 三、填空题 1、下面程序的功能是求方程X**2+BX+C=0的实根,请填空。 IMPLICIT NONE REAL::B,C,X1,X2 READ (*,*) B,C D=B**2-4*C IF( D>0 ) THEN IF( D/=0 ) THEN X1=-B/2.0+SQRT(D)/2.0 X1=-B/2.0-SQRT(D)/2.0 PRINT *,X1,X2 ELSE X1=-B/2.0 X2=X1 PRINT *,X1,X2 ENDIF ELSE PRINT *,‘ERROE’ ENDIF END 2、下面程序的功能是求以下函数的函数值,请填空。 ?3X-lnX?Y??X**3?6?1?(X?0)(0??X??10)(X?10) IMPLICIT NONE REAL::X,Y READ(*,*) X IF (X<0) THEN Y=3*X-LOG(ABS(X)) ELSE IF ( x>=0 .AND. x<=10 ) THEN Y=X**3+6 ELSE Y=1 ENDDO PRINT *,Y END 3、下面程序的功能是判断一个整数是否能被3或7整除,若能被整除,则输出’YES’,否则输出’NO’, 请填空。 IMPLICIT NONE INTEGER::M READ(*,*) M IF(mod(M,3)==0 .OR. mod(M,7)==0 ) THEN PRINT *,‘YES’ ELSE PRINT *,‘NO’ ENDIF END 4、下面程序是判断YEAR是否为闰年,是输出’YES’,不是输出’NO’. IMPLICIT NONE INTEGER ::YEAR CHARACTER(LEN=3)::RES= ’NO’ READ *,YEAR IF (MOD(YEAR,100)==0) THEN IF (MOD(YEAR, 400 )==0) RES=’YES’ ELSE IF (MOD(YEAR, 4)==0) RES= ‘YES’ ENDIF PRINT *,RES END 习题六 一、选择题: 1、阅读下列Visual Fortran程序段 INTEGER::I,J,K DO I = 1,5,2 DO J = 2,6,3 K = I + J ENDDO ENDDO 上述称序段执行完后K的值是 A) 11 B) 10 2、阅读下列Visual Fortran程序段 INTEGER::N,K REAL::S,T C)12 D) 30 READ *, N S = 0.0 K = 1 IF ( N >= 5 ) THEN S = S + 32 T = 1 DO WHILE ( K < N ) T = T * 2 S = S + T K = K +1 PRINT * , S END DO END IF PRINT * , S END 若从键盘输入:6,则运行后S的值为:A) 64.0 B) 32.0 二、运行程序题: (1) 1IMPLICIT NONE INTEGER::M,I,J M=0 DO I=1,5,4 DO J=4,19,4 M=M+1 ENDDO ENDDO PRINT*,M END M的值为___8________。 (2) IMPLICIT NONE INTEGER::K,J REAL::S DO K=2,5,2 S=1.0 DO J=K,5 S=S+J ENDDO ENDDO C)94.0 D) 96.0 PRINT*,S END S的值为__10.0__。 三、填空题 题目要求:从键盘输入5组数,每组有5个数,求出各组中元素绝对值之和的最大者和最小者。 IMPLICIT NONE INTEGER::I,J,SUM,MAX1,MAX2 MAX1 = 0; MIN1 = 0 DO I = 1 , 5 SUM = 0 DO J = 1 , 5 READ*,X SUM = SUM + ABS(X) END DO IF ( SUM > MAX1 ) MAX1= SUM IF ( I= =1 .OR. SUM < MIN1 ) MIN1 = SUM END DO PRINT * , MAX1 , MIN1 END