当前位置:首页 建筑知识 阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT

阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT

发布时间:2023-03-03 07:21:28

阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONTINUERETURNEND程序运行后的结果是:

A、65

阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT

B、85

C、90

D、70

参考答案

【正确答案:D】

这是一个函数子程序调用题,第一次5与K对应,N (S) =1+2+3+4+5=15, 第2次10与K相应,N (10)=1+2+3+4+5+6+7+8+9+10=55,N (S) +N (10) =70。

fortran语言,能否帮我解读一下这个程序,最好每行都有注释,非常感谢

PROGRAM MAIN !主程序

DOUBLE PRECISION A,AA,XX,XX1,XX2,TYY0,TYX0,YY0,YX0!定义双精度变量

DIMENSION A(101),AA(101)!定义数组

OPEN(10,FILE='OUTPUT.TXT',STATUS='UNKNOWN')!建立输出文件通道

WRITE(*,*)'此程序用于求解一元N次方程最接近给定的X0的一个解。'!屏幕提示

WRITE(*,*)'请输入N(≤100,0=EXIT):'!屏幕提示

2 READ(*,*)N !从屏幕读取N

IF(N.EQ.0) THEN !判定如果N=0则程序转去标识符号10000处

GOTO 10000

END IF

IF((N.Lt.0).OR.(N.GT.100)) THEN !判定如果N小于0或N大于100 则屏幕提示重新输入N

WRITE(*,*)'请重新输入N(≤100,0=EXIT):'

GOTO 2 !转到 标识2句处执行

ENDIF

WRITE(*,*)'请依次输入各项系数AN~A0(高次幂~低次幂)。'屏幕提示

WRITE(*,*)'每个数据后回车:'屏幕提示

DO 5 I=1,N+1 输入数组A(I)

READ(*,*) A(I)

5 CONTINUE

IF(MOD(N,2).EQ.0) THEN

WRITE(*,*)' '

WRITE(*,*)'对N为偶数的情况,请仔细校核。'

WRITE(*,*)' '

END IF

WRITE(*,*)'请输入X0:'

READ(*,*) X0

DO 10 I=1,N 输入数组AA(I)

AA(I)=(N-I+1)*A(I)

10 CONTINUE

ICOUNT=0 给ICOUNT赋值

XX=X0给XX赋值

DO 30 I=1,1000000 对I循环从1到10000000

ICOUNT=ICOUNT+1每循环一次计数加一

YY0=0.给YY0赋值

YX0=0.给YX0赋值

DO 40 J=1,N

TYY0=A(J)*(XX**(N-J+1)) 计算TYY0,YY0

YY0=YY0+TYY0

40 CONTINUE

YY0=YY0+A(N+1) 计算YY0

DO 50 K=1,N-1套另一个循环 对K循环从1到N-1

TYX0=AA(K)*(XX**(N-K))

YX0=YX0+TYX0

50 CONTINUE

YX0=YX0+AA(N) 计算YX0

IF(YX0.EQ.0) THEN 判别 YX0如果=0 则

XX=XX+1XX加1

ICOUNT=ICOUNT-1 计数减1

GOTO 30 结束I这一步大循环开始I的下一步循环

END IF

IF(MOD(I,2).EQ.1)THEN判别

XX1=XX-YY0/YX0

XX=XX1

ELSE

XX2=XX-YY0/YX0

XX=XX2

END IF

XX=.5*((XX1+XX2)-(-1)**I*(XX1-XX2)) 计算赋值

IF(ICOUNT.GE.1000) THEN 判别 如果计数大于等于1000则结束程序

WRITE(*,*)' ' 屏幕输出提示

WRITE(*,*)'此方程无实数解。'屏幕输出提示

GOTO 10000 则结束程序

END IF

IF((ABS(XX2-XX1).LE.1.D-15).AND.(ICOUNT.GT.1)) THEN

IF((ABS(XX).GT.1.D-6).AND.(ABS(XX).LT.9.D6)) THEN

GOTO 1000

ELSE

GOTO 1001

END IF

END IF

30 CONTINUE

1000WRITE(*,100)XX

GOTO 1010

1001WRITE(*,101)XX

100 FORMAT(8X,'X=',F25.6)

101 FORMAT(8X,'X=',D25.6)

1010WRITE(*,*)' '

WRITE(*,*)'本程序计算结果仅供参考。'

WRITE(*,*)' '

PAUSE

10000 STOP

END

Fortran一个程序是写文件,写入10个学生的学号和数学成绩,并输出显示在输出屏幕。

在一个程序中实现你的要求:

dimension no(100),score(100)

integer no,score

n=10

c 读数据

do 10 i=1,n

read(*,*) no(i),score(i)

10 continue

c 将数据输出到屏幕

do 12 i=1,n

write(*,*) no(i),score(i)

12 continue

write(*,*)

c 将数据写入文件cj.out

open(99,file='cj.out',status='unknown')

do 15 i=1,n

write(99,*) no(i),score(i)

15 continue

close(99)

c 读刚生成的cj.out文件

open(1,file='cj.out')

do 18 i=1,n

read(1,*) no(i),score(i)

18 continue

close(1)

阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT

m=0

do 19 i=1,n

if (score(i).lt.60) then

m=m+1

write(*,*) no(i),score(i)

endif

19 continue

write(*,*) '不及格人数=',m

write(*,*)

m=0

do 20 i=1,n

if (score(i).ge.60.and.score(i).lt.70) then

m=m+1

write(*,*) no(i),score(i)

endif

20 continue

write(*,*) '60~70之间人数=',m

write(*,*)

m=0

do 21 i=1,n

if (score(i).ge.70.and.score(i).lt.80) then

m=m+1

write(*,*) no(i),score(i)

endif

21 continue

write(*,*) '70~80之间人数=',m

write(*,*)

m=0

do 22 i=1,n

if (score(i).ge.80) then

m=m+1

write(*,*) no(i),score(i)

endif

22 continue

write(*,*) '80以上人数=',m

write(*,*)

pause

end

FORTRAN 程序问题,子程序无法调用 导致无法运算结果。急!!!

程序补充

SUBROUTINE

FN(N,X,Y,Z)

IMPLICIT

REAL(A-H,O-Z)

PARAMETER

(a=1.80,L=21.0,G=1.20)

DIMENSION

R(N,N),X(N),Y(N),Z(N)

CALL

DISTANCE(N,X,Y,Z,R)

FX=0

DO

I=1,N

DO

J=1,N

DO

K=1,N

F1=EXP(G/(R(I,J)-a)+G/(R(I,K)-a))

F2=((R(I,J)**2+R(I,K)**2-R(J,K)**2)/(2*R(I,J)*R(I,K))+1/3)**2

FX=FX+L*F1*F2

ENDDO

ENDDO

ENDDO

RETURN

END

SUBROUTINE

FT(N,X,Y,Z)

IMPLICIT

REAL(A-H,O-Z)

PARAMETER

(c=7.049556277,d=0.6022245584,P=4,Q=0,a=1.80)

DIMENSION

R(N,N),X(N),Y(N),Z(N)

CALL

DISTANCE(N,X,Y,Z,R)

FY=0

DO

I=1,N

DO

J=1,N

IF(R(I,J).LT.a)

THEN

FY=FY+c*((d**(-P))-R(I,J)**(-Q))*EXP(1/(R(I,J)-a))

ELSE

FY=0

ENDIF

ENDDO

ENDDO

RETURN

END

SUBROUTINE

ENERGY(N,X,Y,Z)

IMPLICIT

REAL(A-H,O-Z)

DIMENSION

X(N),Y(N),Z(N)

CALL

FN(N,X,Y,Z)

CALL

FT(N,X,Y,Z)

E=FX+FY

RETURN

END

DO

I=1,N

DO

J=1,N

DO

K=1,N

F1=EXP(G/(R(I,J)-a)+G/(R(I,K)-a))

F2=((R(I,J)**2+R(I,K)**2-R(J,K)**2)/(2*R(I,J)*R(I,K))+1/3)**2

FX=FX+L*F1*F2

ENDDO

阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT

ENDDO

ENDDO

RETURN

END

温馨提示:
本文【阅读下列FORTRAN程序:MQIUH=N (5) +N (10)WRITE(*,’(2X, 15)’)MQIUHENDFUNCTION N (K)N=0DO 10 J=1,kN=N+J10 CONT】由作者 电气工程师考试 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6