一:字符数据处理
1:字符关系
字符比较是按ASCII码值的大小进行比较的。排列的基本规则是:空格字符最小,数字比字母小,大写字母比小写字母小。
字符型数据比较遵循:
(1)单个字符按ASCII比较
(2)两个相同长度的字符串的比较是将字符串的字符从左到右逐个比较,以第一对不同字符的比较结果为准。
(3)长度不同时,把较短的字符串后面用空格补齐再比较。
2:字符处理函数
常用的:
LEN("XXX") !返回字符个数,包括前置和尾部空格
LEN_TRIM("XXX") !返回把字符串尾部空格去掉后的长度
ICHAR("XXX") !字符转为ASCII
IACHAR("XXX") !与上式等价
CHAR(X) !ASCII转字符,等价与ACHAR
二:数组
1:数组的说明方法
以下常用的三种:
REAL(8),DIMENSION(0:10)::A,B,C
INTEGER,DIMENSION(4,5)::D,E
IMPLICITM INTEGER(A-C),REAL(I-J)
DIMENSION B(3:15),IX(10)
REAL K(20)
INTEGER L(5,5)
数组元素是先列后行的顺序来存放的,对于二维数组来说,在占有的存储单元里,先放第一列的元素,再按此往后依次存放。
2:给数组赋初值
(1)用数组构造器
INTEGER,DIMENSION(6)::W=(/3,0,9,2,5,1/)
INTEGER,DIMENSION(8)::P=(/(I,I=1,15,2)/)
INTEGER,DIMENSION(-1,8)::PP=(/3,0,(I,I=1,9,2),4,5,3/)
(2)使用DATA语句
COMPLEX*8 LPP
REAL,DIMENSION(6)::PP
INTEGER,DIMENSION(500)::KKJ
DATA PP,LPP/6*0,(8.0,-89)/
DATA (KKJ(I),I=1,100)/100*10/,(KKJ(I),I=101,500)/100*50/
数组整体运算
REAL A(4,5),B(2,3),C(2,3)
C=A(2:3,1:3)+B
!也可以加常量
B=A(2:3,1:3)+2
3:WHERE语句
WHERE是对数组操作的语句,结构类似于IF。
INTEGER,PARAMETER::N=10
REAL,DIMENSION(N)::A
LOGICAL,DIMENSION::B=.FALSE.
READ *,A
WHERE(ABS(A)>1.0)
B=.TRUE.
A=1./A
END WHERE
PRINT *,A
PRINT *,B
END
4:FORALL语句
REAL::A(0:N)
WHERE(A>0.0) A=SQRT(A)
!等价于
FORALL(I=0:N,A(I)>0.0) A(I)=SQRT(A(I))
定义一个5x5的数组,将前三列数组元素赋值10,后两列赋值20
INTEGER,DIMENSION(5,5)::M
FORALL(I=1:5)
FORALL(J=1:3)
M(I,J)=10
END FORALL
FORALL(J=4:5)
M(I,J)=20
END FORALL
END FORALL
PRINT 10,((M(I,J),J=1,5),I=1,5)
10 FORMAT(5I6)
END
5:动态数组
动态数组是指数组元素的个数在程序运行期间可以改变的数组。动态数组声明后,并未分配存储空间,不能直接使用,使用前需通过ALLOCATE语句为动态数组指定维的上下界。直接研究代码吧。
!计算平均值
IMPLICIT NONE
REAL,DIMENSION(:),ALLOCATABLE::A !定义动态数组
INTEGER::N,I
REAL::V=0.0
READ *,N
ALLOCATE(A(N)) !给动态数组分配存储单元
READ *,A
DO I=1,N
V=V+A(I)
END DO
V=V/N
PRINT *,V
DEALLOCATE(A) !释放动态数组
EDN
使用DEALLOCATE语句释放动态数组的存储空间后,可再次用ALLOCATE语句为动态数组分配新的存储空间。
标签:REAL,字符,复习,Fortran,数组,FORALL,INTEGER,DIMENSION,入门 From: https://blog.csdn.net/2303_77182266/article/details/139558724