需要有关使用数组输出星号和索引的帮助

Eur*_*ust 1 arrays sorting fortran fortran95

fortran 95上此程序的输出显示星号而不是数字.另外,我无法按照预期的方式打印实验#; 实验1,实验2,实验3等.相反,它打印如下; 实验1,实验1,实验1.

关于如何解决这个问题的任何想法?以下是我的整个计划.

谢谢你的时间.

PROGRAM numbersgen
    IMPLICIT NONE

        !Variable declaration
        INTEGER, DIMENSION(:,:),ALLOCATABLE::numarray
        INTEGER, DIMENSION(:),ALLOCATABLE::temparray
        INTEGER:: numrolls, numexps
        INTEGER:: i=0, j=0
        REAL:: avg=0, sdv=0, variance=0, sum=0
        INTEGER:: k, min, pos, temp

        .............
        ------

        REAL, INTENT(IN):: sum
        REAL, INTENT(IN):: avg, variance, sdv

        PRINT*, " "
        PRINT*, "Sum: ",sum
        PRINT '(1X,A,F5.3)', "Average: ",avg
        PRINT '(1X,A,F5.3)', "Variance: ",variance
        PRINT '(1X,A,F5.3)', "Standard Deviation: ",sdv

        END SUBROUTINE

END PROGRAM
Run Code Online (Sandbox Code Playgroud)

wal*_*lyk 5

F5.3格式要求的值在0和9.999之间.如果平均值大于或等于负值,则会发生反转.要查找合理的格式规范,请暂时更改格式,F15.3以便至少可以查看值.

我不明白为什么实验编号没有增加. 哦哦!是i从子程序中使用的主程序的范围?!它们没有本地声明并且implicit none有效,因此我倾向于认为这是一个问题.一个简单的实验证实是i将主程序中的名称更改为完全不同的名称,例如expidx,是否存在编译错误.(有四个地方需要改变.)

  • 在开发程序时,可以方便地使用列表导向的IO:"write(*,*)".然后,您可以不关心项目是否适合输出字段.当您确信程序正在运行时,您可以使用格式使输出看起来更好. (3认同)