fortran第二章.docx
《fortran第二章.docx》由会员分享,可在线阅读,更多相关《fortran第二章.docx(24页珍藏版)》请在冰豆网上搜索。
fortran第二章
第二章
1.
PROGRAMMAIN
IMPLICITNONE
REALA,B,C,D
REAL,PARAMETER:
:
PI=3.1415926/180
PRINT*,"PLEASEINPUTA,B,C"
READ*,A,B,C
D=SIN(ABS(A+B)*PI)/SQRT(COS(ABS(A)*PI+ABS(B)*PI))+TAN(C*PI)
PRINT*,"D=",D
ENDPROGRAMMAIN
2.
PROGRAMMAIN
IMPLICITNONE
REAL:
:
R=6.4,H=5,L,S,SS,VS,SH,VH
REAL,PARAMETER:
:
PI=3.1415926
L=2*PI*R
S=PI*R**2
SS=4*PI*R**2
VS=(4.0/3.0)*PI*R**3
VH=S*H
SH=2*S+L*H
PRINT*,"圆周长为",L
PRINT*,"圆面积为",S
PRINT*,"圆球表面积为",SS
PRINT*,"圆球的体积为",VS
PRINT*,"圆柱的表面积为",SH
PRINT*,"圆柱的体积为",VH
ENDPROGRAMMAIN
3.
PROGRAMMAIN
IMPLICITNONE
REALA,B,C,D,E
PRINT*,"请输入三个小数"
READ*,A,B,C
PRINT*,"A=",A,"B=",B,"C=",C
D=A+B+C
PRINT*,"D=",D
E=INT(D)
IF(D-E>=0.5)THEN
E=INT(D)+1
ENDIF
PRINT*,"四舍五入后为",E
ENDPROGRAMMAIN
4.
PROGRAMMAIN
IMPLICITNONE
REAL:
:
L1=10,L2=20,L3=18,L4=15,L5=21,L6=14,L7=30,L8=36,L9=28,S1,S2,S3,S4,AREA1,AREA2,AREA3,AREA4,AREA
S1=(L3+L7+L4)/2
AREA1=SQRT(S1*(S1-L3)*(S1-L4)*(S1-L7))
S2=(L7+L2+L8)/2
AREA2=SQRT(S2*(S2-L7)*(S2-L2)*(S2-L8))
S3=(L8+L1+L9)/2
AREA3=SQRT(S3*(S3-L8)*(S3-L9)*(S3-L1))
S4=(L5+L6+L9)/2
AREA4=SQRT(S4*(S4-L9)*(S4-L6)*(S4-L5))
AREA=AREA1+AREA2+AREA3+AREA4
PRINT*,"六边形的面积为",AREA
ENDPROGRAMMAIN
5.
PROGRAMMAIN
IMPLICITNONE
INTEGERA,B,C,D,E
PRINT*,"请输入一个四位十进制整数"
READ*,E
A=MOD(E,10)
B=MOD(E-A,100)/10
C=MOD(E-A-10*B,1000)/100
D=(E-A-10*B-100*C)/1000
WRITE(*,"('该整数个位,十位,百位,千位分别为:
',I2,I2,I2,I2)"),A,B,C,D
ENDPROGRAMMAIN
6.
PROGRAMMAIN
IMPLICITNONE
REALA,B
PRINT*,"请输入原成绩"
READ*,A
IF(A<0)THEN
PRINT*,"输入错误"
STOP
ENDIF
PRINT*,"调整成绩前成绩为:
",A
B=SQRT(A)+10
PRINT*,"调整后的成绩为:
",B
ENDPROGRAMMAIN
第三章
1.
PROGRAMMAIN
IMPLICITNONE
REAL:
:
S,W1=0.03,W2=0.10,W3=0.15,T
PRINT*,"请输入工资数"
READ*,S
IF(S<0)THEN
PRINT*,"输入错误"
STOP
ELSEIF(S<=1000)THEN
T=S*W1\
ELSEIF(S<=5000)THEN
T=1000*W1+(S-1000)*W2
ELSE
T=1000*W1+4000*W2+(S-5000)*W3
ENDIF
PRINT*,"该员工应交纳的税金为:
",T
ENDPROGRAMMAIN
2.
PROGRAMMAIN
IMPLICITNONE
CHARACTER(LEN=6)A,B
PRINT*,"请输入星期几"
READ*,A
IF(A=='星期一'.OR.A=='星期四')THEN
B='新闻'
ELSEIF(A=='星期二'.OR.A=='星期五')THEN
B='电视剧'
ELSEIF(A=='星期三'.OR.A=='星期六')THEN
B='卡通片'
ELSEIF(A=='星期日')THEN
B='电影'
ELSE
PRINT*,'输入错误,程序结束'
STOP
ENDIF
PRINT*,A,'的节目为',B
ENDPROGRAMMAIN
3.
PROGRAMMAIN
IMPLICITNONE
REAL:
:
S,T
INTEGERAGE
PRINT*,'请输入该员工的年龄'
READ*,AGE
PRINT*,'请输入该员工的工资'
READ*,S
IF(AGE<=0)THEN
PRINT*,'输入年龄错误'
STOP
ELSEIF(AGE<50)THEN
IF(S<0)THEN
PRINT*,"输入收入错误"
STOP
ELSEIF(S<=1000)THEN
T=S*0.03
ELSEIF(S<=5000)THEN
T=1000*0.03+(S-1000)*0.10
ELSE
T=1000*0.03+4000*0.10+(S-5000)*0.15
ENDIF
ELSE
IF(S<0)THEN
PRINT*,'输入收入错误'
STOP
ELSEIF(S<1000)THEN
T=S*0.05
ELSEIF(S<5000)THEN
T=1000*0.05+(S-1000)*0.07
ELSE
T=1000*0.05+4000*0.07+(S-5000)*0.10
ENDIF
ENDIF
PRINT*,'年龄为',AGE,'月收入为',S,'元的员工应缴纳的税为:
',T,'元'
ENDPROGRAMMAIN
4.
PROGRAMMAIN
IMPLICITNONE
INTEGERYEAR
LOGICALLEAPYEAR
PRINT*,'请输入年份'
READ*,YEAR
IF(MOD(YEAR,100)==0)THEN
IF(MOD(YEAR,400)==0)THEN
LEAPYEAR=.TRUE.
ELSE
LEAPYEAR=.FALSE.
ENDIF
ELSE
IF(MOD(YEAR,4)==0)THEN
LEAPYEAR=.TRUE.
ENDIF
ENDIF
IF(LEAPYEAR)THEN
PRINT*,YEAR,'年有366天'
ELSE
PRINT*,YEAR,'年有365天'
ENDIF
ENDPROGRAMMAIN
5.
PROGRAMMAIN
IMPLICITNONE
INTEGERI
REALA,B,C,D,TEMP
PRINT*,'请输入四个数'
READ*,A,B,C,D
IF(A
TEMP=B
B=A
A=TEMP
ENDIF
IF(ATEMP=C
C=A
A=TEMP
ENDIF
IF(ATEMP=D
D=A
A=TEMP
ENDIF
IF(D>B)THEN
TEMP=D
D=B
B=TEMP
ENDIF
IF(D>C)THEN
TEMP=D
D=C
C=TEMP
ENDIF
IF(B>C)THEN
PRINT*,'四个数由大到小为',A,B,C,D
ELSE
PRINT*,'四个数由大到小为',A,C,B,D
ENDIF
ENDPROGRAMMAIN
6.
PROGRAMMAIN
IMPLICITNONE
INTEGERA,I
I=2
PRINT*,'请输入一个正整数'
READ*,A
IF(A==1.OR.A==2)THEN
PRINT*,'这个正整数是素数'
ENDIF
DOI=2,A-1
IF(MOD(A,I)==0)THEN
PRINT*,'这个正整数不是素数'
STOP
ENDIF
ENDDO
PRINT*,'这个正整数是素数'
ENDPROGRAMMAIN
7.PROGRAMMAIN
IMPLICITNONE
LOGICAL:
:
FLAG=.TRUE.
INTEGER:
:
I=4,J=1,N=0
DOI=4,1000,2
DOJ=1,I/2,2
CALLTEST(J,FLAG)
IF(FLAG)THEN
CALLTEST(I-J,FLAG)
IF(FLAG)THEN
PRINT*,I,"=",J,"+",I-J
N=N+1
ENDIF
ENDIF
ENDDO
PRINT*,I,'有',n,'种分解方法'
N=0
ENDDO
CONTAINS
SUBROUTINETEST(K,F)
INTEGERK,I
LOGICAL:
:
F
F=.TRUE.
DOI=2,K-1
IF(MOD(K,I)==0)THEN
F=.FALSE.
EXIT
ENDIF
ENDDO
ENDSUBROUTINE
ENDPROGRAMMAIN
8.
PROGRAMMAIN
IMPLICITNONE
INTEGERM
INTEGER:
:
I=2
PRINT*,'请输入一个正整数'
READ*,M
WRITE(*,"('=1',\)")
DOWHILE(I<=M)
IF(MOD(M,I)==0)THEN
WRITE(*,"('X',I3,\)"),I
M=M/I
ENDIF
DOWHILE(MOD(M,I)==0)
M=M/I
WRITE(*,"('X',I3,\)"),I
ENDDO
I=I+1
ENDDO
IF(M/=1)THEN
WRITE(*,"('X',I3)")M
ELSE
WRITE(*,*)""
ENDIF
ENDPROGRAMMAIN
第四章
1.PROGRAMMAIN
IMPLICITNONE
INTEGERI
DOI=1,5
PRINT*,"Fortran"
ENDDO
ENDPROGRAMMAIN
2.PROGRAMMAIN
IMPLICITNONE
INTEGER:
:
I,SUM=0
DOI=1,99,2
SUM=SUM+I
ENDDO
PRINT*,"1+3+5+7+9+...+99=",SUM
ENDPROGRAMMAIN
3.PROGRAMMAIN
IMPLICITNONE