Fortran experiment_6 实验报告

6.1 ex0601.f90

有一个4维数组a(2,2,2,2), 编写程序,根据a的元素在内存中的存储顺序,依次输出其下标。

代码:

program ex0601
implicit none

integer :: i, j, k, l
integer :: a(2,2,2,2)
a = reshape((/(i,i=1,16)/),(/2,2,2,2/))

do l=1,2
    do k=1,2
        do j=1,2
            do i=1,2
                write(*,10) a(i,j,k,l),":(",i,",",j,",",k,",",l,")" 
            end do
        end do
    end do
end do
10 format (i2,a,i1,a,i1,a,i1,a,i1,a)

End

结果:

分析:

这个编程题较为简单,主要在于理解数组在内存中的存储方式,与C语言等一些语言里按行存储不同,Fortran中数组是按列存储的,因此对于一个多维数组a(2,2,2,2),其下标依次应为(1,1,1,1),(2,1,1,1)等等。为了方便观察结果,将数组中的元素按下标的顺序编了号(Fortran中数组下标是从1开始的),另外,还要注意输出的格式。

6.2 ex0602.f90

设有10个测试数据,存放在一维数组a中,编写程序计算其方差。

代码:

program ex0602
implicit none

integer :: i, j, k
real ave, sum1, sum2, var
sum1 = 0
sum2 = 0

write(*,*) "comfirm the data"

read(*,*) (a(i),i=1,10)

do j=1, 10
    sum1 = sum1 + a(j)
end do

ave = sum1 / 10

do k=1, 10
    sum2 = sum2 + (a(k)-ave)**2
end do

var = sum2 / 10

write(*,*) var

end

结果:

分析:

这道题要求方差,方差等于每个元素减去平均数的平方再除以个数,因此按部就班的做,首先建立一个数组并读入数据,然后利用一个循环求出平均数,最后再求出方差,注意由于会出现小数所以不要全部用整型变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 9,587评论 2 13
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,829评论 3 44
  • 来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4...
    布客飞龙阅读 33,357评论 6 98
  • 倘若世外有桃源, 怒江边上来相见, 一路骑行看风景, 遍见村落和梯田。 2017.6.15
    一团菌阅读 1,567评论 8 3

友情链接更多精彩内容