回 帖 发 新 帖 刷新版面

主题:[讨论]大家帮忙看看这个是啥问题

PROGRAM largest_smallest
IMPLICIT NONE

INTEGER, PARAMETER:: max_i=16 
INTEGER, PARAMETER:: max_j=20 

INTEGER:: status  
CHARACTER(len=30):: file_name
REAL,DIMENSION(max_i,max_j):: input
INTEGER:: i_large=1 
INTEGER:: j_large=1
INTEGER:: i_small=1 
INTEGER:: j_small=1
INTEGER:: i, j  
INTEGER:: n=0 
REAL:: value 
REAL:: largest 
REAL:: smallest 

WRITE(*,10)
    10 FORMAT(1X,'请输入要读入的数据文件名')
READ(*,*) file_name
WRITE(*,20) file_name
    20 FORMAT(1X,'要读入的数据文件为:',A,'。')
OPEN(unit=8, file=file_name, status='old', iostat=status)
!检验文件是否打开成功
openif: IF(status/=0) THEN !打开失败
            WRITE(*,30) status
                30 FORMAT(1X,'打开文件失败',3X,'status=',I3)
ELSE openif !打开文件成功
    WRITE(*,40)
        40 FORMAT(1X,'打开文件成功')
     readloop: DO i=1,max_i                
      inner1: DO j=1,max_j
        READ(8,*,iostat=status) input !读入数据
        largest=input(1,1)
        smallest=input(1,1) 
        IF(status>0) EXIT 
        n=n+1
        largestif: IF(largest<input(i,j)) THEN  !得到最大值
             largest=input(i,j)
             
             j_large=j
             i_large=i
        END IF largestif
        smallestif: IF(smallest>input(i,j)) THEN  !得到最小值
             smallest=input(i,j)
             
             j_small=j
             i_small=i
        END IF smallestif

        
      END DO inner1

    END DO readloop    
WRITE(*,100)  n, largest, i_large, j_large, smallest, i_small, j_small
     100 FORMAT(//,1X,'读数完成,共',I7,'个数据。'&
            ,//,1X,'最大的数值为:',F10.6,1X,',在第',I5,'行,第',I5,'列',//,&
          1X,'最小值为:',F10.6,1X,',在第',I5,'行,第',I5,'列')
    
!读数终止,是由于读数错误还是由于达到了输入文件的尾部
    readif: IF(status>0) THEN !读数错误
        WRITE(*,50) i, j
           50 FORMAT(1X,'在读入第',I5,'行,第',I5,'列数据时发生错误')
    ELSE !读数完成,输出结果
        WRITE(*,60) n
           60 FORMAT(1X,'读数完成,一共有',I5,'个数据')
       
    END IF readif 
END IF openif
CLOSE(unit=8)
OPEN(unit=3, status='new', file='output.txt') !保存输出在新的文件中
WRITE(3,70) 
     70 FORMAT(1X,'读入的原始数据为:')
WRITE(3,80) input
     80 FORMAT(20(1X,F8.4))
WRITE(3,90)  n, largest, i_large, j_large, smallest, i_small, j_small
     90 FORMAT(//,1X,'读数完成,共',I5,'个数据。'&
            ,//,1X,'最大的数值为:',F8.4,1X,',在第',I3,'行,第',I3,'列',//,&
          1X,'最小值为:',F8.4,1X,',在第',I3,'行,第',I3,'列')    


END

             
       

输出结果一直不对

回复列表 (共2个回复)

沙发

这程序我们无法为你调试。

我们没有输入文件。

如果计算结果不对,请单步 Debug 调试

板凳

可以随便给个数组试试
 27 22 19 18 18 18 19 20 24 36 47 53 57 57 54 47 46 47 50 55
 29 25 22 20 19 19 19 20 24 35 46 52 56 56 50 46 45 46 48 55
 38 33 27 23 20 19 19 22 25 35 46 52 55 49 46 44 43 43 47 52
 47 40 35 26 22 20 22 23 29 36 46 51 50 44 40 36 36 41 45 52
 53 48 42 35 28 24 24 28 33 40 47 50 49 40 30 27 29 33 45 51
 58 52 47 42 36 32 33 32 37 43 49 53 48 35 24 23 26 35 48 56
 59 56 50 46 41 38 37 39 44 50 56 58 54 37 24 24 32 40 53 60
 59 56 52 49 45 42 42 46 50 56 60 61 58 48 40 36 40 49 56 64
 54 53 54 54 50 48 48 52 56 62 65 65 64 57 50 48 50 55 61 66
 54 55 56 57 56 54 55 57 61 66 69 70 68 64 58 56 57 59 64 70
 59 58 60 61 62 60 60 61 64 70 73 74 73 72 66 64 64 66 69 74
 67 65 66 67 67 66 64 66 70 73 72 75 78 76 72 69 69 70 73 77
 73 73 73 73 73 73 72 72 73 73 72 72 79 78 76 76 74 76 77 80
 77 77 77 77 76 75 74 73 74 76 76 76 78 79 80 79 79 79 81 84
 78 79 78 78 78 77 75 74 74 77 78 79 81 82 82 82 82 83 85 86
 82 81 80 80 78 78 77 75 75 78 80 82 83 84 84 85 85 86 87 88

我来回复

您尚未登录,请登录后再回复。点此登录或注册