是格式问题呀。
b 是浮点数,不能用 I 编辑符。(因为 I 编辑符只针对整型)
其他意见,见下面代码的注释内容。
[Fortran] 纯文本查看 复制代码 program main
implicit none
Integer , parameter :: NX = 521 , NY = 1440 , SLAND = -999!//定义常量,以便容易修改
character(*),parameter :: infile='Depth.01',outfile='Depth2.01'
integer :: i,j
real,dimension(NX,NY):: m, b
OPEN(UNIT=20,FILE=infile)
OPEN(UNIT=30,FILE=outfile,status='replace',action='write')
!读取文件
do i=1,NX
read(20,*,end=99) m(i,:)!//数组片段,简化代码
enddo
!赋值
do i=1,NX
do j=1+3,NY-3
if(m(i,j)==SLAND) then
b(i,j)=1
else if(m(i,j)/=SLAND.and.m(i,j+1)==SLAND) then!//此处是否m(i,j+1)??
b(i,j-3:j)=2!//数组片段,简化代码
else if(m(i,j)==SLAND .and. m(i,j+1)/=SLAND) then
b(i,j:j+3)=2!//数组片段,简化代码
else if (m(i,j)<200) then
b(i,j)=2
else
b(i,j)=m(i,j)
endif
enddo
enddo
!写入新文件
do i=1,NX
write(30,'(*(f13.4))') b(i,:)!// *(f13.4) 表示有多少个算多少个。
end do
99 close(20)!//良好的关闭文件习惯
close(30)
end program main
|