看板 NTUCE-94 關於我們 聯絡資訊
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