program mid_exam_3
logical isright
print *,'請輸入三角形三邊邊長'
read*,a,b,c
call tri(a,b,c,isright)
if(isright)then
print *,'此三角形是直角三角形'
else
print *,'此三角形不是直角三角形'
endif
stop
end
subroutine tri(a,b,c,isright)
logical isright
c找出最長邊 d
d=max(a,b,c)
if (a.eq.d)then
e=b
f=c
elseif (b.eq.d)then
e=a
f=c
elseif (c.eq.d)then
e=a
f=b
endif
c 判斷能否構成三角形
If(d.le.0 .or. (e+f).le.D)then
print *,'無法構成三角形'
stop
endif
c 判斷為何種三角形
if(e**2+f**2.gt.d**2)then
print *,'銳角'
isright=.false.
elseif(e**2+f**2.eq.d**2)then
print *,'直角'
isright=.true.
elseif(e**2+f**2.lt.d**2)then
print *,'鈍角'
isright=.false.
endif
return
end
PROGRAM MID_EXAM_4
REAL LNGTD,LATTUD,X,Y,Z
PRINT *,'請輸入經度(東經為正,西經為負)'
READ (*,*) LNGTD
PRINT *,'請輸入緯度(北緯為正,南緯為負)'
READ (*,*) LATTUD
CALL LNLT2XYZ(LNGTD,LATTUD,X,Y,Z)
PRINT *,'X=',X
PRINT *,'Y=',Y
PRINT *,'Z=',Z
STOP
END
SUBROUTINE LNLT2XYZ(LNGTD,LATTUD,X,Y,Z)
REAL LNGTD,LATTUD,X,Y,Z
PARAMETER (R=6400. ,PI=3.1415926)
C偵錯
IF (ABS(LNGTD).GT.180 .OR. ABS(LATTUD).GT.90)THEN
PRINT *,'輸入之經緯度有錯'
STOP
ENDIF
C角度換弧度
ANGEL1=LNGTD*PI/180.
ANGEL2=LATTUD*PI/180.
C座標轉換
X=R*COS(ANGEL1)*COS(ANGEL2)
Y=R*SIN(ANGEL1)*COS(ANGEL2)
Z=R*SIN(ANGEL2)
RETURN
END
PROGRAM mid_exam_5
IMPLICIT NONE
INTEGER A, B
INTEGER GCD
PRINT *, 'INPUT A AND B'
READ *, A, B
PRINT *, 'A = ', A, ' B = ', B
PRINT *, 'GCD(A, B) = ', GCD(A, B)
STOP
END
INTEGER FUNCTION GCD(A, B)
IMPLICIT NONE
INTEGER A, B
INTEGER LARGE, SMALL, TEMP
IF (A .GT. B) THEN
LARGE = A
SMALL = B
ELSE
LARGE = B
SMALL = A
ENDIF
DO WHILE (MOD(LARGE, SMALL) .NE. 0)
TEMP = MOD(LARGE, SMALL)
LARGE = SMALL
SMALL = TEMP
ENDDO
GCD = SMALL
RETURN
END
program mid_exam_6_1
real n
sum=0.
I=0
print *,'input n'
read *,n
do while (n.ge.0)
sum=sum+n
I=I+1
print *,'input n'
read *,n
enddo
avg=sum/I
print *,avg
stop
end
program mid_exam_6_2
real n
logical notneg
notneg=.true.
sum=0.
I=0
do while (notneg)
print *,'input n'
read *,n
if(n.ge.0)then
sum=sum+n
I=I+1
else
notneg=.false.
endif
enddo
avg=sum/I
print *,avg
stop
end
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: 140.112.23.191