Fortran学习笔记(6)

!数组:最多可以定义七维
!数组的定义
!1.用dimension语句定义数组
dimension 数组名(下标下界:下标上界,) !如无特殊声明,类型按I-N规则来确定
dimension a(3,5)
integer a


!2.用类型说明语句定义数组
类型符 数组名(下标下界:下标上界,...)
real a(1:10)


!3.同时使用dimension语句和类型说明语句定义数组
类型符,dimension(下标下界:下标上界,...)
integer dimension(10):: w(2,3)


!给数组赋初值
!1.使用数组赋值符赋初值
数组名=(/取值列表/)
integer a(5)
a=(/2,3,4,5,6/)
print*,a
end


!2.用data语句给数组赋初值
data 数组名/常量表/,数组名/常量表/,...
integer a(5),b(4)
data a/1,2,3,34,5/
data b/4*5/ !*表示数据的重复


!对数组的操作
!1.对数组元素的操作
数组名(下标,...)
integer a(2,2)
a(1,1)=10


!2.数组的整体操作
integer b(5)
b=3 !所有元素都赋值为3


!3.数组局部引用
integer a(6)
a(1:6:2)=3 !三原表达式:初值:终值:步长


!4.where命令:取出部分数组的内容
integer a(5),b(5)
data a/1,2,3,4,5/
where(a>3) !将a中大于3的元素赋值给对应的b数组元素
 b=a
end where
!当程序模块只有一个可执行语句时,可将这个语句写在where后面,省略endwhere
where(a>3) b=a
!配合elsewhere
where(a>3)
 b=1
 else where
  b=2
end where
!where可做多重判断
where()
 ...
 elsewhere()
  ...  
  elsewhere
   ...
endwhere
!where可以被嵌套使用
where()
 ...
 where()
 ...
  elsewhere
  ...
 endwhere
 elsewhere
 ...
endwhere 


!forall命令:用隐含循环来引用数组
forall(表达式1,表达式2,...,条件)
 ...
endforall
integer:: a(5)
forall(i=1:5)
 a(i)=i
endforall
!可以在forall中使用where,但不能在where中使用forall


!数组的保存规则
!1.一维数组的保存规则
!2.二维数组的保存规则(按照列存放的)
!3.三维数组的保存规则(看成多页相同结构的二维表格构成,第三个下标值表示页号;按照页的顺序存放)


!数组的输入和输出
!1.用do循环结构输入输出数组
integer a(10)
do i=1,10
 read*,a(i)
enddo
do j=1,10
 print*,a(j)
enddo
end
!二维
integer b(2,3)
do i=1,2
 do j=1,3
  read*,b(i,j)
 enddo
enddo
do k=1,3
 do l=1,2
  print*,b(l,k)
 enddo
enddo
end
!2.用隐含do循环输入输出数组
integer a(10)
read*,(a(i),i=1,10)
print*,(a(j),j=1,10)
!二维
integer a(2,3)
read*,((a(i,j),j=1,3),i=1,2)
print*,((a(k,l),k=1,2),l=1,3)


!3.用数组名作为输入输出项
integer a(10)
read*,a
print 10,a
10 format(1x,10i5)


!动态数组
[类型说明符,] allocatable:: 数组名(:,:,...),... !冒号表示维数
!或者
[类型说明符,] dimension(:,:,...),allocatable:: 数组名,...
!用allocate语句分配相应存储空间,确定数组的大小
!用deallocate语句释放存储空间


integer n
integer,allocatable:: a(:)
print*,"输入学生数:"
read*,n
allocate(a(n))
print*,"输入学生成绩:"
do i=1,n
 read*,a(i)
enddo
print*, a
deallocate(a)
end
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值