程序为:
PROGRAM least_squares_fit
IMPLICIT NONE
! 数据字典,声明常量
INTEGER,PARAMETER :: LU=18 ! I/O unit for disk I/O
! 数据字典,声明变量类型、定义和单位
CHARACTER(len=24) :: filename
INTEGER :: ierror
INTEGER :: n=0
REAL :: slope
REAL :: sum_x=0.
REAL :: sum_x2=0.
REAL :: sum_xy=0.
REAL :: sum_y=0.
REAL :: sum_y2=0.
REAL :: x
REAL :: x_bar
REAL :: y
REAL :: y_bar
REAL :: y_int
! 提示用户输入并获得输入文件名
WRITE (*,1000)
1000 FORMAT (1x,'This program performs a least-squares fit of an ',/,&
1x,'input data set to a straitght line. Enter the name',/&
1x,'of the file containing the input (x,y) pairs: ')
READ (*,1010) filename
1010 FORMAT (A)
! 打开输入文件
OPEN (UNIT=LU,FILE=filename,STATUS='OLD',IOSTAT=ierror )
! 查看OPEN操作是否失败
errorcheck: IF (ierror>0) THEN
WRITE (*,1020) filename
1020 FORMAT(1x,'ERROR: File ',A,'does not exist! ')
ELSE
!如果文件成功打开,就从文件中读取数据对(x,y)。
DO
READ (LU,*,IOSTAT=ierror) x,y !获得数据对
IF (ierror/=0) EXIT
n=n+1
sum_x=sum_x+x
sum_y=sum_y+y
sum_x2=sum_x2+x**2
sum_xy=sum_xy+x*y
END DO
! 现在计算斜率和截距。
x_bar=sum_x/real(n)
y_bar=sum_y/real(n)
slope=(sum_xy-sum_x*y_bar)/(sum_x2-sum_x*x_bar)
y_int=y_bar-slope*x_bar
! 告知用户
WRITE (*,1030) slope,y_int,N
1030 FORMAT ('0','Regression coefficients for the least-squares line:',&
/,1x,'slope(m)=',F12.3,&
/,1x,'Intercept(b)=',F12.3,&
/,1X,'No of points=',I12)
! 关闭输入文件并退出。
CLOSE (UNIT=LU)
END IF errorcheck
END PROGRAM least_squares_fit
运行结果为图片所示,为什么运行后图片箭头所指的“0”还在?这跟“1030 FORMAT ('0','Regression coefficients for the least-squares line:',&
/,1x,'slope(m)=',F12.3,&
/,1x,'Intercept(b)=',F12.3,&
/,1X,'No of points=',I12)”这个语句的意思不符合啊!
不懂,赐教!我用的CVF6.6的编译器!
![输出格式]()
1.jpg |