Fortran语言基础 - 图文 联系客服

发布时间 : 星期一 文章Fortran语言基础 - 图文更新完毕开始阅读f58fff49fe4733687e21aa93

山东建筑大学

fn_2 = fn_1 fn_1 = fn end do stop end

33

数值分析程序设计——Fortran基础

5 数组(ARRAY)

5.1 基本使用

5.1.1 一维数组

数组声明方法:

DATATYPE NAME (SIZE) 例如: INTEGER A(10) Integer, dimension(10) :: a 例 记录5人成绩的程序

program ex0701 implicit none

integer, parameter :: students = 5 integer :: student(students) integer i do i=1, students

write(*,\ read(*,*) student(i) end do do while( .true. ) write(*,*) \ read(*,*) i

if ( i<=0 .or. i>students ) exit write(*,*) student(i) end do stop end

执行后会要求按照学生学号一个一个地输入成绩,输入完成后就可以按照学生学号来查询成绩,输入一个不存在的学号会结束程序。

34

山东建筑大学

5.1.2 二维数组

声明数组大小时,时用两个数字,他就声明为二维数组。 integer a(10,5) real a(12,3)

二维数组经常被用来当成矩阵使用。 例 二阶矩阵加法

program ex0704 implicit none

integer, parameter :: row = 2 integer, parameter :: col = 2 integer :: matrixA(row,col) integer :: matrixB(row,col) integer :: matrixC(row,col) integer r ! 用来指定row integer c ! 用来指定column ! 读入矩阵A的内容 write(*,*) \ do r=1, row do c=1, col

write(*,\ read(*,*) matrixA(r,c) end do end do

! 读入矩阵B的内容 write(*,*) \ do r=1, row do c=1, col

write(*,\ read(*,*) matrixB(r,c) end do

35

数值分析程序设计——Fortran基础

end do

! 把矩阵A,B相加并输出结果 write(*,*) \ do r=1, row do c=1, col

matrixC(r,c) = matrixB(r,c)+matrixA(r,c) ! 矩阵相加 write(*,\ end do end do stop end

这个程序使用了三个两层循环,前两个循环用来读入矩阵,最后的一个循环用来作矩阵的加法,同时输出相加的结果。

5.1.3 多维数组

Fortran最多可以声明高达七维数组。 Integer a(d1,d2,…,dn)

数组除了可以使用基本的4种类型外,还可以使用自定义类型,这部分将在下面一章介绍。

5.1.4 另类的数组声明

在没有特别赋值的情况下,数组的索引值都是从1开始的。可以经过特别声明的方法改变这个默认值。

Integer a(0:5) Integer a(-3,3)

不过建议不要使用,以免在数组引用过程中,由于不同数组的索引值声明不同,造成混乱。

5.2 数组内容的设置

数组中的每一个元素,可以在程序执行中逐一进行赋值,也可以在声明时

36