计算机技术基础(Fortran)试题库

计算机技术基础(Fortran)试题库
计算机技术基础(Fortran)试题库

一、选择题

1、下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是( )

A) 这是子程序的第一个语句B) 字符串"MAP"是子程序名

C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据

2、FORTRAN表达式"2/4+"的值是( )

A) B) 1 C) D) 0

3、阅读下列FORTRAN程序:

PI=3.

WRITE(*,' ')PI

END

程序运行后输出结果是( )

A) B) 3.1415 C) D)

4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是( )

A) *K*K/4 B) *(K*K/4)

C) *(K/2)**2 D) *(K/2)*(K/2)

5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是( )

A) M .GE. 2000 .AND. M .LE. 5000 B) M .GE. 2000 .OR. M .LE. 5000

C) M .GE. 2000 .AND. M .LT. 5000 D) M .GE. 2000 .OR. M .LT. 5000

6、设FORTRAN子程序如下:

SUBROUTINE SUB(I,X)

B=I+1

X=X+B

END

若主程序中的变量M,B已按I-N规则赋值,则调用上述子程序的语句中正确的是( ) A) CALL SUB(M,M) B) CALL SUB(M+4,B)

C) CALL SUB(B,B) D) CALL SUB(M,B+4)

7、下列不是FORTRAN常量的是( )

A) , B) +00 C) 2/3 D) 'Very good!'

8、阅读下列FORTRAN程序:

F=

DO 20 K=3, 7, 3

DO 20 L=K-1, K

20 WRTTE(*,'(I3, 'K, F*K

END

程序运行结果的最后一行是( )

A) 3 B) 6 6.0 C) 6 D) 7

9、在FORTRAN中,下列运算符的优先顺序是( )

A) 逻辑运算,关系运算,算术运算B) 关系运算,逻辑运算,算术运算C) 算术运算,关系运算,逻辑运算D) 关系运算,算术运算,逻辑运算

10、使用FORTRAN内部函数时,所给的自变量( )

A) 只能是常量B) 只能是变量

C) 只能是常量或者变量D) 可以是常量、变量或者表达式

11、设X=, Y=, Z=, L=.TRUE.,则下列FORTRAN表达式中值为.TRUE.的是( )

A) X+ B) .NOT.

C) . D) Y+

12、下列输出语句行中正确的是( )

A) WRITE(*,*)(A(K,L),K=1,3,L=1,3)

B) WRITE(*,*)A(K,L),K=1,3,L=1,3

C) WRITE(*,*)((A(K,L),K=1,3),L=1,3)

D) WRITE(*,*)(A(K,L),K=1,3),L=1,3

13、给定下列FORTRAN子程序如下:

SUBROUTINE SUB(K,A)

A=SQRT(K*K+

END

下列调用语句中正确的是( )

A) CALL SUB(N,N) B) CALL SUB(X,X)

C) CALL SUB(N,X*X) D) CALL SUB(11,X)

14、阅读下列FORTRAN程序:

INTEGER AA(2,3)

DATA AA/1,2,3,4,5,6/

CALL S2D19(AA)

CALL S2D19(AA(1,2))

END

SUBROUTINE S2D19(BB)

INTEGER BB(2,2)

WRITE(*,'(1X,2I3)') BB(1,1),BB(2,2)

END

程序运行结果是( )

A) 1 4 B) 1 5 C) 1 4 D) 1 2

3 6 2 6 2 5 3 4

15、阅读下列FORTRAN程序:

INTEGER A(3,3)

DO 10 K=1,3

DO 10 L=1,3

10 A(K,L)=K*10+L

WRITE(*,'(1X,3I3)')A

END

程序运行结果是: ( )

A) 11 21 31 B) 11 12 13 C) 31 32 33 D) 33 32 31

12 22 32 21 22 23 21 22 23 32 22 21

13 23 33 31 32 33 11 12 13 31 21 11

16、阅读下列FORTRAN程序:

WRITE(*,10)'YEAR:', 1996

10 FORMAT(/3X,A,I4)

END

程序运行结果是(^代表空格,下同) ( )

A) ^^^^^YEAR:1996 B) ^^YEAR:1996

C) 空白行D) 空白行

^^^^^YEAR:1996 ^^YEAR:1996

17、某函数子程序中使用了IMPLICIT、READ、COMPLEX和FUNCTION四种语句,其中属于可执行语句的是: ( )

A)FUNCTION B) READ C) COMPLEX D) IMPLICIT

18、阅读下列FORTRAN程序:

DIMENSION M(4,4)

DATA M/1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/

DO 10 I=1,4

WRITE (*,100)(M(I,J),J=1,I)

10 CONTINUE

100 FORMAT(1X,4I2)

END

程序运行的结果是( )

A) 1 2 3 4 B) 1 5 9 3 C) 1 D) 1

6 7 8 6 0 4 2 6 2 6 6

1 2 1 5 3 7 1 9 3 7 1 1

6 6 4 8 2 6 3 4 4 8 2 6 6

19、阅读下列FORTRAN程序:

CHARACTER*10 A, B*6

DO 10 I=1,10

A(I:I)=' '

10 COUNTINUE

A(1:5)='ABCDE'

B='FGHIJK'

A(4:9)=B

WRITE(*,100) A

100 FORMAT(1X,A)

END

程序运行结果是:( )

A) ABCDEFGHIJ B) ABCDEGHIJK C) ABCFGHIJK D) BCDEFGHIJK

20、阅读下列FORTRAN程序:

INTRINSIC SIN,COS

WRITE(*,*)FUN(SIN,/FUN(COS,

END

FUNCTION FUN(F,X)

X=X*180

FUN=F(X)

END

程序运行结果是( )

A) sin30°的值B) cos30°的值C) tg30°的值D) ctg30°的值

二、填空题

1、下列FORTRAN子程序的功能是用以下公式计算一组数据Z1,Z2,…,Zn的标准差σ:σ2=(Z12 +Z22+…+Zn2)/n-[(Z1+Z2+…+Zn)/n]2

请在程序中的下划线处填入合适的内容。

【1】SIGMA(Z,N)

REAL Z(N)

SUMX=

SUMX2=

DO 10 K=1,N

【2】

SUMX=SUMX+X

SUMX2=SUMX2+X*X

10 CONTINUE

AV=SUMX/N

AV2=SUMX2/N

S2=AV2-AV*AV

SIGMA=【3】

END

2、下列FORTRAN程序的功能是将30个学生的考试成绩读入数组A,然后统计并且输出最高的分数以及小于60分、60~80分与大于80分的三个分数段的学生数。请在程序中的下划线处填入合适的内容。

【4】A(30), B, C(3)

DATA C/3*0/

READ(*,*)A

【5】

DO 10 K=2,30

IF(A(K). B=A(K)

10 CONTINUE

DO 30 K=1,30

IF (A(K).C(1)=C(1)+1

IF (A(K).C(3)=C(3)+1

IF(A(K). 【6】A(K).C(2)=C(2)+1

30 CONTINUE

WRITE(*,*) B,C

END

3、下列FORTRAN程序的功能是用对分法求出方程在区间(1,5)中的一个实数根,要求输出根的近似值和对分次数。请在程序中的下划线处填入合适的内容。

【7】=*X***

DATA XL,XR,N/,,0/

10 N=N+1

X=(XL+XR)/

FX=FUN(X)

IF (ABS(FX).

WRITE(*,'(1X,A2,,A5,I4)')'X=',X,'N=', N

ELSE

IF(FUN(XR)* THEN

XR=X

【8】

XL=X

ENDIF

【9】

END

4、下列FORTRAN程序的功能是计算多项式y=2+++ 在x=时的值。主程序调用了函数子程序POLY。请在程序中的下划线处填入合适的内容。

PROGRAM PVALUE

REAL A(6)

DATA A/【10】/

DATA N,X/6,

Y=POLY(A,N,X)

WRITE(*,'(1X,A5,6F')'a(k)=',A

WRITE(*,'(1X,A2,,A6,')'X=',X,'; Y=',Y

END

FUNCTION POLY(B,M,V)

【11】

POLY=B(1)

FV=

DO 10 K=2, M

FV=FV*V

10 POLY=POLY+【12】

END

5、下列FORTRAN程序的功能是使用筛法筛选出N以内的所有素数并输出。其算法如下:

在N 以内的自然数列中先筛除2的倍数(不包括2);在2之后未筛去的第一个数是3,于是再筛除3的倍数;在3之后未筛去的第一个数是5,于是再筛除5的倍数;如此重复下去,直到遇见筛剩下的第一个数是最接近N的平方根的那个数为止。请在程序中下划线处填入合适的内容。PARAMETER (N=100)

【13】A(N),P(N)

A(1)=0

DO 10 K=2,N

10 A(K)=K

DO 20 K=3,N

20 IF(MOD(A(K),2).A(K)=0

ISR=SQRT(FLOAT(N))

DO 30 M=3,ISR,2

DO 30 K=M+2, N

30 IF(A(K).【14】

M=1

DO 40 K=1,N

IF(A(K).THEN

P(M)=【15】

ENDIF

40 CONTINUE

WRITE(*,'(1X,10I8)')(P(K),K=1,M-1)

END

三、编写程序题

1、以循环来计算1/1!+1/2!+1/3!+1/4!+……+1/10! 的值。

2、编写一个程序计算圆面积,输入两个参数,一个参数为输入圆的半径长,另一个参数用来返回圆面积。

3、利用选择排序法编制程序,将数组A中所有的数值(5,3,6,4,8,7,1,9,2,10)从小到大排列。

参考答案及评分标准

一、选择题

1、D

2、A

3、D

4、A

5、C

6、B

7、C

8、B

9、C 10、D 11、B 12、C 13、D 14、A 15、A 16、D

17、B 18、C 19、C 20、C

二、填空题

【1】FUNCTION

【2】X=Z(K)

【3】SQRT(S2)

【4】INTEGER或者REAL

【5】B=A(1)

【6】.AND.

【7】FUN(X)

【8】ELSE

【9】GOTO 10

【10】, ,,,

(注:顺序不可颠倒,小数点前后的0可以省略其中的一个。)【11】DIMENSION B(M) 或者REAL B(M)

【12】B(K)*FV 或者FV*B(K)

【13】INTEGER

【14】A(K)=0 或者A(K)=

【15】A(K)

三、编写程序题

1、解题程序:

program main

implicit none

integer, parameter :: max=10

integer i

real item

real ans

ans =

item =

do i=2,max

item = item/real(i)

ans = ans+item

end do

write(*,*) ans

stop

end program

2、解题程序:

program main

implicit none

real radius, area

write(*,*) "请输入半径长"

read(*,*) radius

call CircleArea(radius, area)

write(*,"(' 面积= '") area

stop

end program

subroutine CircleArea(radius, area)

implicit none

real, parameter :: PI=

real radius, area

area = radius*radius*PI

end subroutine

3、解题程序:

program main

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 ! a(i)跟a(j)交换

t=a(i)

a(i)=a(j)

a(j)=t

end if

end do

end do

write(*,"(10I4)") a

stop

end

一、选择题

1、下列关于FORTRAN源程序编辑规则的叙述之中,正确的是( )

A) IMPLICIT语句可以放在REAL语句行之后

B) DATA语句可以在放在紧靠END语句行之前

C) 注释行不可以放在END语句行之后

D) FORMAT语句可以放在PROGRAM语句行之前

2、下列FORTRAN源程序的变量名之中,不符合规则的是( )

A) W B) W3 C) -3 D) W3W

3、若FORTRAN中一个INTEGER型数据占用2个字节,那么该类型的数据值范围是( )

A) -48 47 B) -32768 32767

C) 0 95 D) 0 65535

4、阅读下列程序

X=

WRITE(*,'')X

END

程序运行后显示结果是( )

A) .6180 B) -01 C .0618E+01 D) .6180E+00

5、梯形的上底为A,下底为B,高为H,计算其面积的FORTRAN表达式中错误的是( )

A) 1/2*(AB)*H B) (A+B)*H/2 C) (A+B)/2*H D) *(A+B)*H

6、要选拔身高T>1.7米且体重W<公斤的人,FORTRAN的逻辑表达式是( )

A) B) 62.5

D) 、在FORTRAN的变量类型说明语句中没有( )

A) REAl语句B) CHAR语句C) INTEGER语句D) LOGICAL语句

8、一次成功的FORTRAN源程序编译操作,不能( )

A) 同时编译一个主程序和一个子程序B) 同时编译几个子程序

C) 同时编译一个主程序和几个子程序D) 同时编译几个主程序

9、阅读下列程序

F=

DO 20,J=3,7,2

DO 20,K=J-1,J

20 F =F*K

WRITE(*,'(13,')J,F

END

程序运行结果是

A) 3 B) 5 120.0 C) 9 D)

10、阅读下列程序

CHARACTER*10 W

DO K=1,10

READ *,W

IF (W(1:2).EQ.'AB'.(1:2).EQ.'ab')WRITE(*,*)'',W

ENDDO

END

程序的功能是( )

A) 首字符是A或B的字符串被输出显示

B) 第一、二个字符是AB或ab的字符串被输出显示

C) 首字符是a或b的字符串将被输出显示

D) 第一、二个字符是Aa或Bb的字符串将被输出显示

11、阅读下列程序

LOGICAL L

READ(*,*)A,B

L=

IF(L)THEN

X=B+2*A

ELSE

X=B

END IF

WRITE(*,*)X

END

使用键盘为上述程序输入两个初值4和3,其输出的X值是( ) A) B) 3.0 C) D)

12、阅读下列程序

READ(*,*)K

WRITE(*,100)K

100 FORMAT(I5)

END

程序运行时输入初始值12345,那么显示结果是

A) 2345 B) 12345 C) **** D) *****

13、阅读下列程序

INTEGER F

F(X,Y)=X+Y

A=

B=

B=B+F(A,B)

WRITE(*,'')B

END

程序运行的结果是( )

A) .1 B) .7 C) D)

14、阅读下列程序

A=

CALL SUBA(A,A,A)

WRITE(*,'')A

END

SUBROUTINE SUBA(X,Y,Z)

Y=

Z=Z+X

END

程序运行的结果是( )

A) B) 5.0 C) D)

15、阅读下列程序

CHARACTER A*4,B*5,C*4

DATA A,B,C/'BIG’,'MIDDLE','SMALL'/

WRITE(*,20)A,B,C

20 FORMAT(1X,A2,A3,A4)

END

程序运行结果是( )

A) BIGMIDDLE B) ********* C) BIGMIDSMA D) BIMIDSMAL

16、阅读下列程序

N=0

DO 10 K=1,3

N =N+1

M=K*N

10 CONTINUE

WRITE(*,'(1X,2I3)')M,K

END

程序运行结果是( )

A) 9 4 B) 9 3 C) 12 4 D) 12 3(#^)

17、阅读下列程序

FUN(c,d)=a*c+b/d

DATA a,b/,

WRITE(*,'')FUN(a,b)-FUN(b,a)

END

程序运行结果是( )

A) B) 4.0 C) D)

18、阅读下列程序

LOGICAL L1,L2,L3,L4,L5

DATA L1,L2,L3/3*.TRUE./

L4=.3

WRITE(*,*)L4,L5

END

程序运行结果是( )

A) T T B) T F C) F F D) F T

19、阅读下列程序

DIMENSION M(3,3)

DATA M/1,2,3,4,5,6,7,8,9/

WRITE(*,100)(M(3,J),J=1,3)

100 FORMAT(1X,3I2)

END

程序运行结果是( )

A) 2 5 8 B) 3 6 9 C) 4 5 6 D) 7 8 9

20、阅读下列程序

INTEGER A(100),G

READ(*,*)N,(A(I),I=1,N)

DO 10 I=1,N-1

G=I

DO 20 J=I+1,N

IF(A(J).(G))THEN

G=J

ENDIF

20 CONTINUE

K=A(I)

A(I)=A(G)

A(G)=K

10 CONTINUE

WRITE(*,'(1X,10I2)')(A(I),I=1,N)

END

程序运行时输入的初始值是3,6,9,8,则运行结果是( )

A) 6 9 8 B) 8 9 6 C) 6 8 9 D) 9 8 6

二、填空题

1、阅读下列程序,其功能是求出方程2X3-3X2+4X-11=0在区间(1,5)中的一个实数根,运行结果是显示根值和对分次数,使用的是二分算法。请在其中_____处填入适当的内容。

FUN(X)=*X***X**2+*

DATA XL,XR,N/,,0/

10 CONTINUE

【1】

X=(XL+XR)/

【2】

IF(ABS(FX). .

WRITE(*,'(1X,A2,,A5,14)')'X=',X,'N=',N

ELSE

IF(FUN(【3】)*

XR=X

ELSE

XL=X

ENDIF

GOTO 10

ENDIF

END

2、阅读下列程序.其功能是计算Y=1+++++当X=时的值。主程序调用了函数子程序。请在其中____处填入适当的内容。

PROGRAM PVALUE

【4】

DATA A/,,,,,,N,X/6,

【5】

WRITE(*,'(1X,A5,6F')'a(k)=',A

WRITE(*,'(1X,A2,,A6,')'X=',X,'; Y=',Y

END

FUNCTION POLY(B,M,V)

DIMENSION B(M)

POLY=B(1)

FV=

DO 10K=2,M

FV=FV*V

10 【6】=POLY+B(K)*FV

END

3、函数子程序DTOH能够将一个十进制正整数DEC转换为一个表示十六进制数的字符字符串,其长度不超过8。例如127转换为'7F'。算法是:将DEC除16取余,将所得的商再除16取余,如此反复,直到商和零为止,最后按照逆序输出所得的各个余数。请在其中____处填入适当的内容。

CHARACTER*8 FUNCTION DTOH(DEC)

INTEGER DEC,R,POS

POS=9

DTOH=''

111 CONTINUE

【7】

IF

R=MOD(DEC,16)

IF

【8】=CHAR(ICHAR('0')+R )

ELSE

DTOH(POS:POS)=CHAR(ICHAR('A')+R-10)

ELSE

DTOH='**********'

GOTO999

ENDIF

DEC=DEC/16

IF(【9】)GOTO 111

999 CONTINUE

END

PROGRAM DECHEX

CHARACTER*8 DTOH

WRETE(*,*) DTOH(127)

END

4、有一个十进制的四位数ABCD与一个十进制的三位数CDC的差等于十进制的三位数ABC.下列程序按"ABCD=9876"的样式打印出ABCD这个数。请在其中____外填入适当的内容. INTEGER A,B,C,D

DO 10 A=1,9

DO 10 B=0,9

DO 10 C=1,9

【10】

L=1000*A+100*B+10*C+D

M=100*C+10*D+C

N=100*B+C

IF(【11】)WRITE(*,'(【12】)')'XABCD=',A,B,C,D

10 CONTINUE

END

5、阅读下列程序,其功能是使用筛法选出N以内的所有素数并显示算法在N以内的自然数列中先筛除2的倍数;在2之后筛乘下的第一个数是3,于是再筛除3的倍数;在3之后筛剩下的第一个数是5,于是再筛除5的倍数;如此重复下去,直到遇见筛剩下的第一个数是最接近N的平方根的那个数为止。请在其中____处填入适当的内容。

PROGRAM PRINES

PARAMETER (N=100)

INTEGER A(N),P(N)

DO 10 K=1,N

10 A(K)=K

DO 20 K=3,N

20 IF(【13】.A(K)=0

ISR=SQRT(REAL(N))

DO 30M=3,ISR,2

DO 30K=M+2,N

30 IF(A(K).0

DO 40K=

IF(A(K).THEN

【14】

M=M+1

ENDIF

40 CONTINUE

WRITE(*,'(1X,1018)')(P(K), 【15】)

END

三、编写程序题

1、以循环来计算等差数列1+3+5+7+……+99 的值。

2、利用选择排序法编制程序,将数组A中所有的数值(5,3,6,4,8,7,1,9,2,10)从大到小排列。

3、编制函数GCD(A,B)计算输入的两个整数A,B的最大公因子。

参考答案

一、选择题

1、B

2、C

3、B

4、D

5、A

6、C

7、B

8、D

9、C 10、B 11、C 12、B 13、A 14、C 15、D 16、A

17、B 18、D 19、B 20、C

二、填空题

【1】N=N+1或N=1+N

【2】FX=FUN(X)

【3】XR

【4】DIMENSION A(6)或REPL A(6)

【5】Y=POLY(A,N,X)

【6】POLY

【7】POS=POS-1

【8】DTOH(POS:POS)

【9】或【10】DO 10 D=0,9或DO 10,D=0,9

【11】或(L-M).

【12】

【13】MOD(A(K),2)

【14】P(M)=A(K)

【15】K=1,M-1

三、编写程序题

1、解题程序:

program main

implicit none

integer i,sum

sum = 0

do i=1,99,2

sum = sum+i

end do

write(*,*) sum

stop

end program

2、排序程序:

program main

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 ! a(i)跟a(j)交换

t=a(i)

a(i)=a(j)

a(j)=t

end if

end do

end do

write(*,"(10I4)") a

stop

end

3、解题程序:

program main

implicit none

integer, external :: gcd

write(*,*) gcd(18,12)

end program

integer function gcd(A,B) implicit none

integer A,B,BIG,SMALL,TEMP BIG=max(A,B)

SMALL=min(A,B)

do while( SMALL /= 1 )

TEMP=mod(BIG,SMALL)

if ( TEMP==0 ) exit

BIG=SMALL

SMALL=TEMP

end do

gcd=SMALL

return

end function

大学FORTRAN考试试题样题

《高级语言程序设计(FORTRAN)》考试样题 一、选择题(每小题2分,共40分) 1. 下列标识符中不能作为FORTRAN的合法变量名的是_____D_____。 A) A_1 B) A1 C) A1A D) A+1 2. 在FORTRAN的变量类型说明语句中没有 B A) REAL语句B)CHAR语句C)INTEGER语句 D)LOGICAL语句 3.FORTRAN90 源程序的扩展名是 C 。 A. TXT B. F C. F90 D. FOR 4.下列关于符号常量的说法正确的是___C____。 A.符号常量的定义应该放在所有语句之前 B.符号常量不可以是字符型常量 C.在一个程序单位中定义一个符号常量后,不能再改变它的值 D.符号常量定义语句与赋值语句一样,是可执行语句 5、在下列写法中,__D______不是FORTRAN常量。 A. .TRUE. B.1E-2 C. (0.0,2.4) D.1,000,000 6.表达式15/4/2.0的值是 B 。 A.整数2 B.实数1.5 C.实数2.25 D.实数1. 3 7. 下列不是FORTRAN赋值语句的是 _____D______。 A) X=.TRUE. B) X=X*X C) X=X**2**2 D) X=X++ 8. 梯形的上底为A,下底为B,高为H,计算其面积的FORTRAN表达式中错误的是____A____。 A)1/2*(AB)*H B)(A+B)*H/2 C)(A+B)/2*H D)0.5*(A+B)*H 9. 要选拔身高T>1.7米且体重W<62.5公斤的人,FORTRAN的逻辑表达式是__C_____。 A)T.ce.1.7.AND.w.le.62.5 B)T.le.1.7.OR.w.ge.62.5 C)T.gt.1.7. AND.w.lt.62.5D)T.gt.1.7.OR.w.lt.62.5 10.FORTRAN 90规定,变量类型声明的优先顺序是 C 。 A.隐含约定(I-N规则)、IMPLICIT声明、类型声明 B.类型声明、隐含约定(I-N规则)、IMPLICIT声明 C.类型声明、IMPLICIT声明、隐含约定(I-N规则) D.IMPLICIT声明、类型声明、隐含约定(I-N规则) 11、假设CH是一个字符型变量,并且具有足够的长度,则对于CH(3:7),下面说法正确的是___D________。 A.它是一个数组片段 B.它是一个数组定义形式 C.它是CH的一个子串,并且长度是4 D.它是CH的一个子串,并且长度是5 12.数组声明语句为: INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::A 数组共有 A 个元素。 A.175 B.150 C.120 D.17 13. 下列DATA语句中正确的是______C____。 A) DATA /A,B/-1.0, -1.0/ B) DATA A, B/2*(-1.0)/ C) DATA A, B/2*-1.0/ D) DATA A/-1.0, B/-1.0 14. 下列有关FORTRAN数组的说法正确的是______D_____。 A) 数组定义语句只能定义一维或二维数组 B) 数组元素下标不能出现负值 C) 在赋值语句中出现的A(3)肯定是数组元素 D) 程序中使用的数组必须进行说明

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) 33 B) 1 C) 5 D) 3 A (7)下列FORTRAN77 表达式中,合法的是:A)相当于0.0.LE.X .AND.(.NOT.(X.GE.10.0 ))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 D (8)关于编译一个FORTRAN源程序文件,下列说法中错误的是 A) 允许编译只有一个主程序而没有子程序的源文件 B) 允许编译有多个子程序的源文件 C) 允许编译只有一个子程序而没有主程序的源文件 D) 允许编译有多个主程序的源文件 C (9)在FORTRAN77源程序中,续行标志符必须放在 A) 第1列 B) 第1-6列 C) 第6列 D) 第5列 D (10)下列关于"SUBROUTIN E 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 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.0 B)FUNCTION FUN(I,J,K)=3*I+2*J+0.5*K

FORTRAN 90 程序编程规范

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

大学FORTRAN考试试题1

1.下列叙述中,正确的是(D ) A.语句标号的大小影响程度执行的顺序 B.程序完全按语句出现的先后顺序执行 C.不同程序单位不能有相同的语句标号 D.同一程序单位不能有相同的语句标号 2.下列标识符中,不能作为合法的FORTRAN90标识符的是( C) A.A3_B3 B.VOID C._123 D.IF 3.下列哪一个为正确的常量( D ) A.123,000 B. 3.5E+2.5 C. TRUE D. “HELLO” 4.若A=2,B=2,I=3,则表达式A**B**I的值为( C ) A. 64 B.12 C.256 D16. 5.圆的直径存放在整型变量D之中,下列计算圆面积的表达式中正确的是( D ) A. 3.14159*(D/2)*(D/2) B. 3.14159*(D*D/4) C. 3.14159*(D/2)**2 D. 3.14159*D*D/4 6.下列运算符中,运算优先级最高的是(B ) A. 关系运算 B. 算术运算 C. 逻辑非运算 D. 逻辑与运算 7.下列FORTRAN的表达式中值为0.5的是( C) A.MOD(4.8,0.5) B.100/20/10 C.50.0/4/25 D.MOD(15,10)/10 8.下列是完整的FORTRAN程序,编译时出错的语句是( C ) A.PROGRAM PRINT B.PARAMETER (PI=3.1415926) C.PI=PI+1 D.WRITE(*,*)SIN(PI+0.5) END 9.变量的类型定义中,优先级由高到低的顺序为( A ) A.类型说明语句、IMPLICIT 说明语句、隐含约定 B.隐含约定、IMPLICIT 说明语句、类型说明语句 C.IMPLICIT 说明语句、类型说明语句、隐含约定 D.隐含约定、类型说明语句、IMPLICIT 说明语句 10.“两整数M与N不能同时小于零”的FORTRAN表达式( D ) A.M>=0.AND.N>=0 B.(M.GE.0.AND.N.LT.0).OR.(M.LT.0.AND.N.GE.0)C.(M.LE.0.AND.N.LE.0).OR.(M.LE.0.AND.N.GE.0)D.M.GE.0.OR.N.GE.0

fortran基本函数

FORTRAN 90标准函数(一) (2012-07-03 17:14:57) 转载▼ 分类:学习 标签: fortran 函数 教育 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。

注:三角函数名前有C、D的函数为复数、双精度型函数。 注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。 表4 参数查询函数

atan2函数的值域是多少?我从网上找到一个fortran函数的日志,说此值域是-π~π,但正常反正切函数的值域应该是-π/2~π/2。对atan2函数不够了解,所以不知道你的答案对不对,我个人认为不对。我是用正常的反正切函数atan(v/u)来算的: FORTRAN: if (u>0..and.v>0.) dir=270-atan(v/u)*180/pi if (u<0..and.v>0.) dir=90-atan(v/u)*180/pi if (u<0..and.v<0.) dir=90-atan(v/u)*180/pi if (u>0..and.v<0.) dir=270-atan(v/u)*180/pi if (u==0..and.v>0.) dir=180 if (u==0..and.v<0.) dir=0 if (u>0..and.v==0.) dir=270 if (u<0..and.v==0.) dir=90 if (u==0..and.v==0.) dir=999 其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。atan函数换成atand函数的话直接是度数,不用*180/pi 我四个象限和轴都试了,应该没错。 最需要注意的问题,一个是函数值域,另一个是uv矢量方向和风向是反着的,并且风向角度数是从正Y轴开始顺时针算,和三角函数里度数从正X轴开始逆时针算不一样。

中国海洋大学Fortran程序考试典型题

1、找出100-150之间和400-450之间能被9整除的数 2、找出100-999之间的回文数 3、找出水仙花数

4、输出“*”图形 5、输入n个数,找出大于平均值的数和最小数

6、把一个数值型数组的相同数删除到只剩一个 7、形成一个5*5矩阵,对角线元素为“i”,其余为“j”program juzhen implicit none integer I,J integer,parameter::size=5 integer::a(size,size) forall(I=1:size,J=1:size,I>J) a(I,J)=j forall(I=1:size,J=1:size,I==J) a(I,J)=i forall(I=1:size,J=1:size,I

integer,allocatable::c(:) write(*,*) "输入数组A的数据个数" read(*,*) n write(*,*) "输入数组B的数据个数" read(*,*) m l=m+n allocate (a(n)) allocate (b(m)) allocate (c(l)) write(*,*) "从小到大输入A的元素" do i=1,n read(*,*) a(i) end do write(*,*) "从小到大输入B的元素" do i=1,m read(*,*) b(i) end do do i=1,n c(i)=a(i) end do i=1 do while(i=c(n))then n=n+1 c(n)=b(i) goto 10 else if(b(i)>c(j).and.b(i)

FORTRAN77试题B

贵州大学2006-2007学年第一学期考试试卷 B 高级语言程序设计 注意事项: 1. 请考生按要求在试卷装订线内填写姓名、学号和年级专业。 2. 请仔细阅读各种题目的回答要求,在规定的位置填写答案。 3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。 4. 满分100分,考试时间为120分钟。 一、选择题(共50分,每小题2分,各题中A)、B)、C)、D) 四个选项中,只有一个选项是正确的,请将正确的编号填在括号内) 1. 使用超大规模集成电路制造的计算机应该归属于() A) 第一代B) 第二代C) 第三代D) 第四代 2. 下列FORTRAN77运算符中,优先级最低的是()A)逻辑运算符.AND. B)算术运算符* C)关系运算符.GE. D)算术运算符+ 3.下列标识符中,不属于FORTRAN77常量的是()A).TRUE. B)FALSE C)ˊROOT=ˊ D)ˊ123.0ˊ 4.下列叙述中错误的是()A)PROGRAM语句可以是FORTRAN77主程序的第一个语句 B)每一个FORTRAN77程序块的最后一个语句必须是END语句 C)FORTRAN77的所有语句都是可执行语句 D)FORTRAN77的任何可执行语句都可以有标号 5.下列FORTRAN77表达式中,值为.FALSE.的是()A).NOT.(.FALSE. .AND. .NOT. .TRUE.) B).NOT. .FALSE. .OR. .NOT. .TRUE. C).NOT. .TRUE. .AND. .NOT. .FALSE. D)X .GT. Y .OR. X .LE. Y 6. 在计算机内部,一切信息存取、处理和传送的形式是() A) ASCII码B) BCD码C) 二进制D) 十六进制

fortran程序实例

1)实例3—求多个半径下的圆周长 ! z3.f90 --Fortran95 ! FUNCTIONS: ! z3 - Entry point of console application. !************************************************************************* ! PROGRAM: z3 ! PURPOSE: Entry point for the console application. !************************************************************************ program z3 ! 求多个半径下的圆周长 ! 主程序 ! PROGRAM Z3 PRINT *, 'R=',1.2,'C=',C(1.2) PRINT *, 'R=',3.4,'C=',C(3.4) PRINT *, 'R=',15.6,'C=',C(15.6) PRINT *, 'R=',567.3,'C=',C(567.3) END program z3 !子程序 FUNCTION C(R) PI=3.1415926 C=2*PI*R RETURN ! Body of z3 end

2)实例4—键盘与显示器输入/输出 a)Fortran 基本操作 b)程序指令 ! ZXZ_I_O.f90 ! FUNCTIONS: ! ZXZ_I_O - Entry point of console application. ! PROGRAM: ZXZ_I_O ! PURPOSE: Entry point for the console application. !***************输入、输出样式种种************************** program ZXZ_I_O implicit none !变量声明的位置 INTEGER(2) i; INTEGER(4) j; INTEGER(4) m; REAL n INTEGER A,B ! Variables PRINT*,'输入整数A'; READ*, A PRINT*,'输入整数B'; READ*, B B=A+B PRINT*,'B=A+B=',B WRITE(*,*) 'A*B=',A*B PRINT* ,'以上为计算机的计算结果,注意B的值'

FORTRAN程序设计复习题及答案

FORTRAN程序设计复习题 一、选择题 B (1)下列各FORTRAN表达式中合法的是 A) S+T*2P >= B) .NOT. (A*B+C) C) A2+B2/(C+D) <= D) (A+B).NOT.A*B.GT.(.NOT.只跟一个表达式) C (2)数学式(3/5)ex+y的FORTRAN表达式是 A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/ C) (3/5)*EXP(X+Y)D) 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.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) .AND.. B) 10.0 C) D) 提示:A)相当于 .AND.(.NOT.()) D (8)关于编译一个FORTRAN源程序文件,下列说法中错误的是 A) 允许编译只有一个主程序而没有子程序的源文件 B) 允许编译有多个子程序的源文件 C) 允许编译只有一个子程序而没有主程序的源文件 D) 允许编译有多个主程序的源文件 C (9)在FORTRAN77源程序中,续行标志符必须放在 A) 第1列 B) 第1-6列C) 第6列D) 第5列 D (10)下列关于"SUBROUTIN E MAP(X,Y)"语句行的叙述中,不正确的是 A) 这是子程序的第一个语句 B) 字符串"MAP"是子程序名 C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据 提示:子程序无返回值,自定义函数才有) A (11)FORTRAN表达式"2/4+"的值是 A) B) 1 C) D) 0 提示:2/4默认等于整型,=》 D (12)FORTRAN表达式"MOD,"的值是 A) B)0.0 C) D) A (13下列FORTRAN运算符中,优先级最低的是 A)逻辑运算符.AND. B)算术运算符*

计算机技术基础(Fortran)试题库

一、选择题 1、下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是( ) A) 这是子程序的第一个语句B) 字符串"MAP"是子程序名 C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据 2、FORTRAN表达式"2/4+"的值是( ) A) B) 1 C) D) 0 3、阅读下列FORTRAN程序: PI=3. WRITE(*,' ')PI END 程序运行后输出结果是( ) A) B) 3.1415 C) D) 4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是( ) A) *K*K/4 B) *(K*K/4) C) *(K/2)**2 D) *(K/2)*(K/2) 5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是( ) A) M .GE. 2000 .AND. M .LE. 5000 B) M .GE. 2000 .OR. M .LE. 5000 C) M .GE. 2000 .AND. M .LT. 5000 D) M .GE. 2000 .OR. M .LT. 5000 6、设FORTRAN子程序如下: SUBROUTINE SUB(I,X) B=I+1 X=X+B END 若主程序中的变量M,B已按I-N规则赋值,则调用上述子程序的语句中正确的是( ) A) CALL SUB(M,M) B) CALL SUB(M+4,B) C) CALL SUB(B,B) D) CALL SUB(M,B+4) 7、下列不是FORTRAN常量的是( ) A) , B) +00 C) 2/3 D) 'Very good!' 8、阅读下列FORTRAN程序: F= DO 20 K=3, 7, 3 DO 20 L=K-1, K

Fortran基本用法小结档

Fortran基本用法小结 目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。 另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果有不妥的地方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=Formula Translator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortran90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。以下是77和90的一些格式上的区别。

几个fortran程序

计算圆周率 REAL R,R1,R2,PI ISEED=RTC() N0=0 N=300000 DO I=1,N R1=RAN(ISEED) R2=RAN(ISEED) R=SQRT(R1*R1+R2*R2) IF(R<1.0)N0=N0+1 END DO PI=4.0*N0/N WRITE(*,*)PI END 一)蒙特卡洛计算生日问题 假设有N个人在一起,各自的生日为365天之一,根据概率理论,与很多人的直觉相反,只需23个人便有大于50%的几率人群中至少有2个人生日相同。 INTEGER M(1:10000), NUMBER1(0:364), NUMBER2 REAL X,Y ISEED=RTC() DO J=1, 10000 NUMBER1=0 X=RAN(ISEED) NUMBER1(0)=INT(365*X+1) JJJ=1 DO I=1,364 Y=RAN(ISEED) NUMBER2=INT(365*Y+1) ETR=COUNT(NUMBER1.EQ.NUMBER2) IF (ETR= =1) THEN EXIT ELSE JJJ=JJJ+1 M(J)=JJJ NUMBER1(I)=NUMBER2 END IF END DO END DO DO I=1,10000 IF(M(I).LE.23) SUM=SUM+1 END DO PRINT *,SUM/10000 END 二)MONTE CARLO SIMULATION OF ONE DIMENSIONAL DIFFUSION 蒙特卡罗计算一维扩散问题

INTEGER X,XX(1:1000,1:1000) REAL XXM(1:1000) ! X:INSTANTANEOUS POSITION OF ATOM ! XX(J,I):X*X ,J:第几天实验,I:第几步跳跃 ! XXM(I): THE MEAN OF XX WRITE(*,*) "实验天数JMAX,实验次数IMAX" READ(*,*) JMAX,IMAX ISEED=RTC() DO J=1,JMAX !第几天实验 X=0 !!! DO I=1,IMAX !第几步跳跃 RN=RAN(ISEED) IF(RN<0.5)THEN X=X+1 ELSE X=X-1 END IF XX(J,I)=X*X END DO END DO OPEN(1,FILE="C:\DIF1.DAT") DO I=1,IMAX XXM=0.0 XXM(I)=1.0*SUM(XX(1:JMAX,I))/JMAX !! WRITE(1,*) I, XXM(I) END DO CLOSE(1) END 三维的! 三)通过该程序了解FORTRAN语言如何画图(通过像素画图)USE MSFLIB INTEGER XR,YR !在的区域中画一个圆 PARAMETER XR=400,YR=400 INTEGER R, S(1:XR,1:YR) X0=XR/2 ! 圆心位置X0,YO Y0=YR/2 R=MIN(X0-10,Y0-10) !圆半径 S=0 !像素的初始状态(颜色) DO I=1,XR DO J=1,YR IF((I-X0)**2+(J-Y0)**2<=R**2)S(I,J)=10 IER=SETCOLOR(S(I,J)) IER=SETPIXEL(I,J) END DO END DO END

fortran程序30个

程序1 PROGRAM chaper1272 INTEGER :: A(10)=(/5,7,4,8,12,2,10,3,9,11/) INTEGER :: sum=0,ave !打开一数据文件,设置一个有格式直接存取文件,将10个数分2个记录写入文件。 !数据文件生成2个记录,每个记录行长度相同,记录长度为25 OPEN(1,FILE='input21.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=25) WRITE(1,"(5I5)",REC=1)(A(I)+10,I=1,5) !按格式说明将头5个数写入第1个记录 WRITE(1,"(5I5)",REC=2)(A(I)+10,I=6,10)!按格式说明将后5个数写入第2个记录 READ(1,"(5I5)",REC=2)(A(I),I=6,10) !按格式说明从第2个记录中读取后5个数 READ(1,"(5I5)",REC=1)(A(I),I=1,5) !按格式说明从第1个记录中读取头5个数 DO I=1,10 sum=sum+A(I) ENDDO ave=sum/10 !打开一个最大记录长度为22的有格式顺序存取文件

OPEN(2,FILE='input22.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=22) WRITE(2,"('10个数之和为:',I5)",REC=1) sum !输出1记录行,记录长度为22 WRITE(2,"('10个数平均值为:',I5)",REC=2)ave !输出1记录行,记录长度为22 WRITE(2,"(A)",REC=3) '程序运行正常结束。' !输出一个记录行,记录长度为22 END 程序2 PROGRAM average REAL sum,ave INTEGER n OPEN(1,file='score.dat') PRINT*,'正在统计平均成绩,请等待。' sum=0.0;n=0 DO READ(1,*,END=100) S sum=sum+s n=n+1 ENDDO 100 ave=sum/n

Fortran 上机题汇总

Fortran 复习题汇总program exer101_1 implicit none realpi,r,t,s C 说明符号常量 parameter(pi=3.1415926) C 打开用于保存结果的文件 open(9,file='mydata.dat') write(*,*)"请输入r和t的值:" read*,r,t s=t/360.0*pi*r**2 C 在屏幕上显示结果 print*,'r=',r,'t=',t,'s=',s C 采用格式说明语句显示结果 write(*,100)'r=',r,'t=',t,'s=',s 100 format(1X,3(A2,F10.5,1X)) C 将结果保存至文件中 write(9,*)'r=',r,'t=',t,'s=',s end program exer101_2 implicit none realpi.r,t,s parameter(pi=3.1415926) !说明符号常量 open(9,file='mydata.dat') !打开用于保存结果的文件write(*,*)"请输入r和t的值:" read*,r,t s=t/360.0*pi*r**2 print*,'r=',r,'t=',t,'s=',s !在屏幕上显示结果 write(*,100)'r=',r,'t=',t,'s=',s !采用格式说明语句显示结果100 format(1X,3(A2,F10.5,1X)) write(9,*)'r=',r,'t=',t,'s=',s !将结果保存至文件中 end 1

2 program ex202 implicit none real F,C print*,"请输入一个华氏温度:" read*,F

fortran习题参考答案

工程分析程序设计上机作业(五) 模块化编程 上机目的:掌握内部例程、主程序、外部例程、模块等功能的使用方法。 1、有一个六边形,求其面积。为求面积,作了3条辅助线。如图所示:(提示,三角形面 积 2 a b c s ++ =,a、b、c为三个边长)。要求用内部函 数来计算每个三角形的面积。 =21 program main implicit none real :: A(9)=(/10,30,16,13,21,14,20,36,28/) integer i real s s=area(A(3),A(4),A(7))+area(A(2),A(7),A(8))+ & area(A(1),A(8),A(9))+area(A(5),A(6),A(9)) print*,'The area is',s contains function area(x,y,z) implicit none real x,y,z real p,area p=(x+y+z)/2 area=sqrt(p*(p-x)*(p-y)*(p-z))

end function end 2、编写一个子例程子程序,SUM(S,T,N1,N2)。把整型数N1到N2进行求和,并把求 和的结果放置到S,把整型数N1到N2进行求积,并把求积的结果放置到T。并用这个子程序来计算: y=++++++++++- (1234)(345678)(3*4*5*6)(1*2*3) program main implicit none integer A(8) integer i,b,c,d,e,f,g,m,n,y b=0;d=0;g=1;n=1 do i=1,8 A(i)=i end do call sum(b,c,1,4) call sum(d,e,3,8) call sum(f,g,3,6) call sum(m,n,1,3) y=b+d+g-n print*,'y=(1+2+3+4)+(3+4+5+6+7+8)+(3*4*5*6)-(1*2*3)=',y contains subroutine sum(s,t,N1,N2) integer s,t,N1,N2,i do i=N1,N2 s=s+A(i) t=t*A(i) end do end subroutine end 3、编写函数子程序GDC求两个数的最大公约数。求最大公约数的算法如下:把两个数中 大的那个数作为被除数,两数相除得到一个余数。把余数去除除数得到新一轮的余数。 不断重复这一过程直到余数为0,这时的除数就是两个数的最大公约数。

Fortran基本用法小结

【以下文字转载自D_Atmosphere 讨论区】 【原文由superjyq 所发表】 我的Fortran基本用法小结 高级语言和算法组heavensky 目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。 另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果有不妥的地方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=Formula Translator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortran90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所

Fortran95程序设计课后习题答案(word版方便)

第四章 1.program main implicit none write(*,*) "Have a good time." write(*,*) "That's not bad." write(*,*) '"Mary" isn''t my name.' end program 2.program main real, parameter :: PI=3 implicit none.14159 real radius write(*,*) "请输入半径长" read(*,*) radius write(*,"(' 面积='f8. 3)") radius*radius*PI end program 3.program main implicit none real grades write(*,*) "请输入成绩" read(*,*) grades write(*,"(' 调整后成绩为'f8.3)") SQRT(grades)*10.0 end program 4.integer a,b real ra,rb a=2 b=3 ra=2.0 rb=3.0 write(*,*) b/a ! 输出1, 因为使用整数计算, 小数部分会无条件舍去write(*,*) rb/ra ! 输出1.5 5.p rogram main implicit none type distance real meter, inch, cm end type type(distance) :: d write(*,*) "请输入长度:" read(*,*) d%meter d%cm = d%meter*100 d%inch = d%cm/2.54 write(*,"(f8.3'米='f8.3'厘米='f8.3'英寸')") d%meter, d%cm, d%inch end program 第五章 1.program main implicit none integer money real tax write(*,*) "请输入月收入" read(*,*) money if ( money<1000 ) then tax = 0.03 else if ( money<5000) then tax = 0.1 else tax = 0.15 end if write(*,"(' 税金为'I8)") nint(money*tax) end program 2.program main implicit none integer day character(len=20) :: tv write(*,*) "请输入星期几" read(*,*) day select case(day) case(1,4) tv = "新闻" case(2,5) tv = "电视剧" case(3,6) tv = "卡通" case(7) tv = "电影" case default write(*,*) "错误的输入" stop end select write(*,*) tv end program 3.program main implicit none integer age, money real tax write(*,*) "请输入年龄" read(*,*) age write(*,*) "请输入月收入" read(*,*) money if ( age<50 ) then if ( money<1000 ) then tax = 0.03 else if ( money<5000 )then tax = 0.10 else tax = 0.15 end if else if ( money<1000 ) then tax = 0.5 else if ( money<5000 )then tax = 0.7 else tax = 0.10 end if end if write(*,"(' 税金为'I8)") nint(money*tax) end program 4.program main implicit none integer year, days logical mod_4, mod_100, mod_400 write(*,*) "请输入年份" read(*,*) year mod_4 = ( MOD(year,4) == 0 ) mod_100 = ( MOD(year,100) == 0 ) mod_400 = ( MOD(year,400) == 0 ) if ( (mod_4 .NEQV. mod_100) .or. mod_400 ) then days = 366 else days = 365 end if write(*,"('这一年有'I3'天')") days stop end program 第六章 1.program main implicit none integer i do i=1,5 write(*,*) "Fortran" end do stop end program 2.program main implicit none integer i,sum sum = 0 do i=1,99,2 sum = sum+i end do write(*,*) sum stop end program 3.program main implicit none integer, parameter :: answer = 45 integer, parameter :: max = 5 integer weight, i do i=1,max write(*,*) "请输入体重" read(*,*) weight if ( weight==answer ) exit end do if ( i<=max ) then write(*,*) "猜对了" else write(*,*) "猜错了" end if stop end program 4.program main implicit none integer, parameter :: max=10 integer i real item real ans ans = 1.0 item = 1.0 do i=2,max item = item/real(i) ans = ans+item

相关文档
最新文档