美文网首页
Fortran experiment_6 实验报告

Fortran experiment_6 实验报告

作者: tobbby | 来源:发表于2017-05-04 09:27 被阅读0次

    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
    

    结果:

    分析:

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

    相关文章

      网友评论

          本文标题:Fortran experiment_6 实验报告

          本文链接:https://www.haomeiwen.com/subject/qgdrtxtx.html