主题:[讨论]大家帮忙看看这个是啥问题
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
输出结果一直不对
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
输出结果一直不对