Fortran语言编程小结Word格式.docx
《Fortran语言编程小结Word格式.docx》由会员分享,可在线阅读,更多相关《Fortran语言编程小结Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
name!
人名
integer:
age!
年龄
height!
身高
INTEGER:
weight!
体重
character(len=80):
address!
地址
Endtypeperson
type(person):
a!
声明一个person类型的变量
write(*,*)"
NAME:
"
read(*,*)a%name
AGE:
read(*,*)a%age
HEIGHT:
read(*,*)a%height
WEIGHT:
read(*,*)a%weight
ADDRESS:
read(*,*)a%address
write(*,100)a%name,a%age,a%height,a%weight
100format("
Name:
A10/,"
Age:
I3/,"
Height:
Weight:
I3/,&
"
Addres:
A80)
End
4.REAL与INTEGER
Programex0431
a=1
b=2
real:
c
c=a/b!
c=1/2=0,虽然c是浮点数,但因为a,b是整数,计算a/b时会用整数去计算.
write(*,"
(F5.2)"
)c
5.DATA变量表/初值表/,变量表/初值表/,…
PROGRAMex0430
IMPLICITNONE
INTEGERA
REALB
COMPLEXC
CHARACTER(20)STR
DATAA,B,C,STR/1,2.0,(1.0,2.0),'
FORTRAN77'
/
WRITE(*,*)A,B,,C,STR
6.复数实虚部
Programex0430
complex:
c=(1,2)
write(*,100)real(c),'
+'
aimag(c),'
i'
100format(f5.1,a1,f5.1,a1)
7.逻辑输出
Programex0416
logicala,b
a=.true.
b=.false.
write(*,100)a,b
100format(L5,L4)
8.Programex0415
character(len=20)string
character(len=5)substring
string="
Haveaniceday."
substring="
nice"
write(*,*)ichar('
A'
)!
输出字符A的ASCII码
write(*,*)char(65)!
输出ASCII码65所代表的字符,也就是A
write(*,*)len(string)!
输出字符串string声明时的长度
write(*,*)len_trim(string)!
输出字符串string内容的长度
write(*,*)index(string,substring)!
nice在Haveaniceday的第8个位置
9.Programex0414
character(len=6)first
character(len=10)second
character(len=20)add
first="
Happy"
second="
Birthday"
add=first//second!
经由两个连续的除号可以连接两个字符串
write(*,100)add
100FORMAT('
生日快乐'
/,A)
10.带精度计算
Programex0408
real(kind=8):
a,b
b=0.1
write(*,*)a,"
+"
b,"
="
a+b
11.逻辑if语句
Programex0504
integerrain,windspeed
logicalr,w
write(*,*)"
Rain:
read(*,*)rain
Wind:
read(*,*)windspeed
r=(rain>
=500)!
如果rain>
=150,r=.true,不然r=.false.
w=(windspeed>
=10)!
如果windspeed>
=10,w=.true,不然w=.false.
if(r.or.w)then!
只要r或w有一个值是true就成立
停止上班上课"
else
照常上班上课"
Endif
12.SelectCase用法
Programex0512
score
charactergrade
Score:
read(*,*)score
selectcase(score)
case(90:
100)
grade='
case(80:
89)
B'
casedefault
?
'
Endselect
('
Grade:
A1)"
)grade
13.IFGOTO语句
PROGRAMex0514
IMPLICITNONE
REALheight
REALweight
WRITE(*,*)"
height:
READ(*,*)height
weight:
READ(*,*)weight
IF(weight>
height-100)GOTO200
100WRITE(*,*)"
Undercontrol."
GOTO300
200WRITE(*,*)"
Toofat!
300STOP
END
14.DOWHILE循环
Programex0604
integer,parameter:
limit=10
integercounter
ans=0
counter=2
dowhile(counter<
=limit)
ans=ans+counter
counter=counter+2
enddo
write(*,*)ans
15.CYCLE,EXIT语句
Programex0609
i,j
loop1:
doi=1,3
loop2:
doj=1,3
if(i==3)exitloop1!
跳离loop1循环
if(j==2)cycleloop2!
重做loop2循环
write(*,"
i2,'
'
)'
)"
)i,j
enddoloop2
enddoloop1
16.大小写字符
Programex0612
integeri
integerstrlen
character(len=20):
string
String:
read(*,*)string
strlen=LEN_TRIM(string)
doi=1,strlen
string(i:
i)=char(ichar(string(i:
i))+32)
encoded:
A20)"
)string
17.循环计算
Programex0614
reala,b,ans
character:
key='
y'
!
为了至少循环一次
dowhile(key=='
.or.key=='
Y'
)
read(*,*)a
read(*,"
(A1)"
)key
read(*,*)b
selectcase(key)
case('
)
ans=a+b
-'
ans=a-b
*'
ans=a*b
/'
ans=a/b
casedefault
Unknownoperator'
)key
stop
endselect
(F6.2,A1,F6.2,'
='
F6.2)"
)a,key,b,ans
(Y/y)todoagain.(Other)toexit."
18.矩阵相加
pogramex
row=2
col=2
matrixA(row,col)
matrixB(row,col)
matrixC(row,col)
integerr
integerc
MatrixA"
dor=1,row
doc=1,col
A('
I1,'
)='
)r,c
read(*,*)matrixA(r,c)
MatrixB"
B('
read(*,*)matrixB(r,c)
MatrixA+B="
matrixC(r,c)=matrixB(r,c)+matrixA(r,c)
I3)"
)r,c,matrixC(r,c)
endpogramex
[write(*,"
(I3,I3,/,I3,I3)"
)((mc(i,j),i=1,2),j=1,2)]
19.programex
implicitnone
a(2,2)=(/1,2,3,4/)
!
a(1,1)=1,a(2,1)=2,a(1,2)=3,a(2,2)=4
b(4)=(/5,6,7,8/)
c
(2)
write(*,*)a,2)
write(*,*)a(:
1)
c=a(:
1)!
c
(1)=a(1,1),c
(2)=a(2,1)
write(*,*)c!
c
(1),c
(2)
c=a(2,:
)!
c
(1)=a(2,1),c
(2)=a(2,2)
write(*,*)c(2:
1:
-1)!
c
(2),c
(1)
c=b(1:
4:
2)!
c
(1)=b
(1),c
(2)=b(3)
20.FORALL语句
Programex
Implicitnone
I,J
size=5
a(size,size)
forall(I=1:
size,J=1:
size,I>
J)a(I,J)=1!
上半部分
size,I==J)a(I,J)=2!
对角线
size,I<
J)a(I,J)=3!
下半部分
(5(5I5,/))"
)a
21.Allocatable
ProgramEX
size,error=0
one_mb=1024*1024!
1MB
character,allocatable:
a(:
Do
size=size+one_mb!
allocate(a(size),stat=error)
if(error/=0)exit
Allocate'
I10,'
bytes'
)size
(F10.2,'
MBused'
)real(size)/real(one_mb)
deallocate(a)
Enddo
22.Function函数
a=10
b=20
add
(f6.2)"
)add(a,b)
Functionadd(a,b)
a,b
add
add=a*b
23.SAVE语句
callsub()
Endprogram
Subroutinesub()
Implicitnone
Integer:
count=1
Savecount!
指定save变量永远活着,不会忘记它的内容
Write(*,*)count
count=count+1
End[运行结果:
123]
24.生成随机数
programex
interface!
定义函数的接口
functionrandom10(lbound,ubound)
lbound,ubound
random10(10)
endfunction
endinterface
a(10)
CALLRANDOM_SEED()!
系统根据日期和时间随机地提供种子
a=random10(1.0,10.0)
(10F6.2)"
end
functionrandom10(lbound,ubound)
len
random10(10)
realt
len=ubound-lbound!
计算范围大小
doi=1,10
callrandom_number(t)!
t会是0~1之间的随机数
random10(i)=lbound+len*t!
把t转换成lbound~ubound间的随机数
25.MODULE语句
Moduleglobal
integera,b
commona,b
Endmodule
Programex0834
useglobal
write(*,*)a,b
return
Endsubroutine
26.写文件到text
programex0902
open(unit=10,file="
test.txt"
write(10,"
(A20)"
)"
ILOVEYOU."
写到文件中
rewind(10)
read(10,"
)string!
从文件中读出来
写到屏幕上
end
27.随机成绩
programgendata
integerstudents
realr(3)
(4A5)"
座位"
"
语文"
数学"
英语"
callrandom_seed()
Howmanystudents?
read(*,*)students
doi=1,students
callrandom_number(r)
(6I5)"
)i,int(r*50+50)
endprogram