本帖最后由 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] 纯文本查看 复制代码 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 |