| 本帖最后由 chuxf 于 2014-5-24 17:47 编辑 
 给你一些建议:
 1.在程序里使用 Implicit None,并且要声明所有变量的名字。(这就是导致你 invaild integer 问题的原因,因为不声明的话,m 会是整数,而数据却是 80.0 )
 2.五门课程,请用数组。
 3.要写 Program main。
 4.你需要比对最大值,你必须使用数组,记录下每一个学生的分数。(这是你犯的最大的错)
 5.求最大值,最小值。Fortran 有现成的 MinLoc ,MaxLoc ,MinVal,MaxVal 函数。
 6.你有一句空读的 read(10,*),这句不需要。(除非输入数据有表头)
 
 
 [Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode Program www_fcode_cn
  Implicit None
  Integer , parameter :: N = 5 !// 5 个学生
  Integer , parameter :: M = 5 !// 5 门课程
  Integer :: i , x , stuid(1)
  Real :: ct( M , N ) , ctotal( N ) , cavg( N ) !// 分数,总分,平均分
  open(10,file='data')
  open(20,file='x.txt')
  !read(10,*) 这句不要
  write(20,*) "学号 数学 物理 化学 生物 英语 总成绩 平均成绩"
  do i=1,N
    read(10,*) x , ct( : , i ) !// 第 i 个学生的成绩
    ctotal(i) = sum(ct(:,i)) !//总分
    cavg(i) = ctotal(i)/M !//平均分
  enddo
  stuid = MaxLoc(ctotal) !// 获得总分最高的学生编号
  x = stuid(1)
  write(20,200) x , ct( : , x ) , ctotal( x ) , cavg( x )
  200 format(i4,5f6.1,2f8.1)
End Program www_fcode_cn |