Fortran Coder

查看: 8159|回复: 2
打印 上一主题 下一主题

[流程控制] Fortran语言 循环语句求助!

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
7 点
跳转到指定楼层
楼主
发表于 2014-5-24 16:15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
题目是输入100名学生的学号和五门课的成绩,要求统计并打印出总分成绩最高学生的学号、各门课成绩、总成绩及平均成绩。我先编了一个5名学生和五门课成绩的。程序如下:
[Fortran] 纯文本查看 复制代码
open(10,file='data')
open(20,file='out')
read(10,*)
write(20,100)
100 format(1x,"学号 数学 物理 化学 生物 英语 总成绩 平均成绩")
do i=1,5,1
read(10,*)x,m,p,c,b,e
enddo
max=0
do i=1,5,1
   t=m+p+c+b+e
   if(t>max)then
   max=t
   endif
enddo
a=max/5
write(20,200)x,m,p,c,b,e,max,a
200 format(i4,5f6.1,2f8.1)
end

然后准备的data文件是这样的:
1  80.0  68.0  98.0  69.0  65.0
2  96.0  78.0  96.0  77.0  82.0
3  78.0  80.0  80.0  89.0  75.0
4  68.0  96.0  78.0  91.0  88.0
5  98.0  98.0  68.0  94.0  100.0
编译没问题,但是运行的时候显示run-time error F6101(data)-invaild integer
不知道哪错了本人是Fortran菜鸟一枚,被这个程序弄得焦头烂额,求大神赐教!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2014-5-24 17:44:51 | 只看该作者
本帖最后由 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

2

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
7 点
板凳
 楼主| 发表于 2014-5-25 09:53:51 | 只看该作者
chuxf 发表于 2014-5-24 17:44
给你一些建议:
1.在程序里使用 Implicit None,并且要声明所有变量的名字。(这就是导致你 invaild intege ...

谢谢大神!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-10 01:23

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表