主题:请问一下这个程序为什么会出现这种情况?
Module StudMod Implicit None Integer , Parameter :: INUMBER_OF_COURSE = 6 Type T_Stud Integer :: iStuNumber !//学号 Real :: rScore( INUMBER_OF_COURSE ) !//6门成绩 Real :: rScoreAll , rScoreAvg !//总分和平均分 EndType T_Stud Contains Subroutine GetStudInfo( cFilename , stStudArray ) Character( Len = * ) ,Intent( IN ) :: cFilename Type( T_Stud ) , Intent( OUT) :: stStudArray( : ) Integer :: i Open( 12 , File = cFilename ) Do i = 1 , size( stStudArray ) Read( 12 , * ) stStudArray( i )%iStuNumber , stStudArray(i)%rScore EndDo Close( 12 ) EndSubroutine GetStudInfo Subroutine CalcScore( stStud ) Type( T_Stud ) , Intent( INOUT ) :: stStud Integer :: i Real :: rTmp rTmp = 0.0 Do i = 1 , INUMBER_OF_COURSE rTmp = rTmp + stStud%rScore( i ) End Do stStud%rScoreAll = rTmp stStud%rScoreAvg = rTmp / INUMBER_OF_COURSE End Subroutine CalcScore Subroutine OutputInfo( stStud , iNum ) Type( T_Stud ) , Intent( IN ) :: stStud(:) Integer , Intent( IN ) :: iNum Write(*,"(i,6f7.1,f9.1,f9.3)") stStud( iNum )%iStuNumber,stStud( iNum )%rScore ,stStud( iNum )%rScoreAll, stStud( iNum )%rScoreAvg End Subroutine OutputInfo Subroutine HeapSort( stD , comp_f ) Type ( T_Stud ) , Intent( INOUT ) :: stD( : ) Real , External :: comp_f Integer i,ir,j,l,n Type ( T_Stud ) :: stTemp n = size( stD ) If ( n < 2 ) Return l = n / 2 + 1 ir= n Do while( .TRUE. ) If( l > 1 ) then l = l - 1 stTemp = stD( l ) Else stTemp = stD( ir) stD( ir ) = stD( 1 ) ir = ir - 1 If( ir == 1 ) then stD( 1 ) = stTemp return End If End If i = l j = l + l Do while( j<=ir ) If( ( j < ir ) ) then If ( comp_f( stD(j) , std(j+1) ) > 0.0 ) then j = j+1 End If EndIf If( comp_f( stTemp , stD(j) ) > 0.0 )then stD(i) = stD( j ) i = j j = j + j Else j = ir + 1 End If EndDo stD( i ) = stTemp End Do End Subroutine HeapSort Real Function comp_f_Score( st1 , st2 ) Type( T_Stud ) , Intent( IN ) :: st1 , st2 comp_f_Score = st1%rScoreAll - st2%rScoreAll End Function comp_f_Score End Module StudMod Program Main Use StudMod Implicit None Integer , Parameter :: INUMBER_OF_STUD = 35 !35个学生 Type( T_Stud ) :: stStuds( INUMBER_OF_STUD ) !定义学生数组结构体 Integer :: i , iCourseNumber Call GetStudInfo( "info.dat" , stStuds ) !读入学生信息 Do i = 1 , INUMBER_OF_STUD Call CalcScore( stStuds(i) ) !计算平均分和总分 End Do Call HeapSort( stStuds , comp_f_Score ) !排序 Do i = 1 , INUMBER_OF_STUD Call OutputInfo( stStuds , i ) !输出排序后的学生信息 End Do Write(*,*) "请输入挑选的课程号(1-6):" Read(*,*) iCourseNumber Do i = 1 , 5 If( stStuds(i)%rScore( iCourseNumber ) > 90.0 ) then Call OutputInfo( stStuds , i ) !输出满足筛选条件的学生信息 End If End Do End Program Main
下面是运行时出现的东西
run-time error F6501: READ(info.dat)
- end of file encountered
Press any key to continue