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

| 此程序在fortran 95上的输出显示星号而不是数字。另外,我无法像这样按预期方式打印Experiment#;实验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
    
已邀请:
F5.3
格式要求该值介于0到9.999之间。如果平均值大于该值或为负,则取而代之。要找到合理的格式规范,请暂时将格式更改为
F15.3
,以便至少可以看到这些值。 我不知道为什么实验编号无法增加。哦哦!子例程中使用的主程序中ѭ3的范围吗?它们没有本地声明,而
implicit none
有效,因此我倾向于认为这是一个问题。一个容易确认的实验是将主程序中的名称“ 3”更改为完全不同的名称,例如“ 6”,并查看是否存在编译错误。 (有四个地方需要更改。)     
通过将子例程放在程序的contain语句中,可以授予子例程访问程序中声明的数据的权限。这样,使用i和j的子例程实际上会在程序本身内部更改其值。不要这样做! 正确的方式是将子例程作为单独的程序单元或放入模块中,并在主程序中使用它。     

要回复问题请先登录注册