FORTRAN.doc_第1页
FORTRAN.doc_第2页
FORTRAN.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

为我爱人搜集的程序 但愿能帮上她的忙 HXM例1 分别建立顺序文件,从终端输入N个学生的姓名和三门课的成绩,分别存入这两个文件中,文件总的每个记录存放一名学生的名字和他的成绩,嘉定最多有100名学生。,每位学生姓名最多由12个字符组成、1. 输入N名学生的数据,建立一个名为SSTUD.DAT的顺序存取数据文件,存放学生的数据,此文件假定动器A的磁盘上,程序如下: PROGRAM MAIN DIMENSION NAME(100),S(100,3) CHARACTER*12 NAMEWRITE(*,*)INPUT NUMBER OF STUD:READ(*,*)NOPEN(4,FILE=A:SSTUD.DAT,STATUS=NEW)DO 10 I=1,NREAD(*,*) NAME(I),(S(I,J),J=1,3)10 CONTINUEWRITE(4,200)(NAME(I),(S(I,J),J=1,.3),I=1,N)200 FORMAT(A12,3F10.2)WRITE(*,210)(NAME(I),(S(I,J),J=1,.3),I=1,N)210 FORMAT(4X,A12,3F10.2) CLOSE(4) END2,输入N名学生的数据,建立一个名为DSTUD.DAT的直接存取文件,存放学生的数据,此文件假定在驱动器A的磁盘上。程序如下: PROGRAM MAIN DIMENSION NAME(100),S(100,3) CHARACTER*12 NAMEWRITE(*,*)INPUT NUMBER OF STUD:READ(*,*)NDO 10 I=1,NREAD(*,*) NAME(I),(S(I,J),J=1,3)10 CONTINUEWRITE(*,210)(NAME(I),(S(I,J),J=1,.3),I=1,N)210 FORMAT(4X,A12,3F10.2)OPEN(3,FILE=A:DSTUD.DAT,STATUS=NEW,* ACCESS=DIRECT,FORM=FORMATTED,RECL=50)DO 20 I=1,N WRITE(3,200,REC=1) NAME(I),(S(I,J),J=1,3)20 CONTINUE CLOSE(3)200 FORMAT(A12,3F10.2) END例2在检查上例输入学生数据后发现第K1个记录中的姓名有错,第K2个记录中学生的第二门课程的成绩有错。编写程序修改SSTUD.DAT和DSTUD.DAT中的有错数据。1.修改顺序存取文件SSTUD.DAT.在修改顺序存取文件时,必须从头开始顺序读入每一个记录,把正确的那些记录顺序写到另一个临时文件中;在读入到有错的记录时,则把修改后的内容写到临时文件中,待全部修改完后,再把临时文件中的内容顺序传送回SSTUD,DAT文件中,程序如下所示,程序中的设备号2连接的文件是一个临时文件,在程序结束前对应的CLOSE语句中规定删除此文件。PROGRAM MAIN DIMENSION A(3) CHARACTER*12 NAME,RENAME OPEN(1,FILE=A:SSTUD.DAT,STATUS=OLD)OPEN(2,FILE=A:TEMP,STATUS=NEW)WRITE(*,*)INPUT NUM OF STUD:READ(*,*) NREAD(*,*)K1,RENAMEREAD(*,*)K2,SDO 10 I=1,N READ(1,100)NAME,(A(J),J=1,3)IF(I. EQ. K1) THEN NAME=RENAME ELSE IF(I. EQ. K2)THEN A(2)=SEND IFWRITE(2,100) NAME,(A(J),J=3)10 CONTINUE REWIND(1) REWIND(2)20 READ(2,100,END=30) NAME,(A(J),J=1,3) WRITE(1,100) NAME,(A(J),J=1,3) WRITE(*,(/4X,A,3F10.2) NAME,(A(J),J=1,3) GOTO 20 30 CLOSE (1) CLOSE(2,STATUS=DELETE)100 FORMAT(A12,3F10.2) END2.修改直接存取文件DSTUD.DAT,程序如下,从程序可以看出,修改直接存取文件比修改顺序存取文件简单得多PROGRAM MAIN DIMENSION A(3) CHARACTER*12 NAME,RENAME OPEN(2,FILE=A:SSTUD.DAT,STATUS=OLD,ACCESS=DIRECT,* RECL=50,FORM=FORMATTED)READ(*,*)K1,RENAMEREAD(*,*)K2,SREAD(2,100,REC=K1)NAME,(A(I),J=1,3)NAME=RENAMEWRITE(2,100,REC=K1)NAME,(A(I),I=1,3)READ(2,100,REC=K2)NAME,(A(I),I=1,3)A(2)=SWRITE(2,100,REC=K2)NAME,(A(I),I=1,3)100 FORMAT(A12,3F10.2) CLOSE(2) END例3 从学生的数据文件中读入学生的成绩,调用SORE子程序来求出学生的平均分,并按成绩优劣排好序,把排好序的学生数据(姓名、三门课的成绩、平均分),按无格式记录形式放在一个直接存取文件中。程序如下: PROGRAM T35 DIMENSION NAME(100),S(100,3),AVE(100) CHARACTER*12 NAME,RNAME,FSTAT OPEN(1,FILE=A:SSTUD.DAT,STATUS=OLD) N=02 N=N+1 READ(1,100,END=4) NAME(N),(S(N,J),J=1,3) GOTO24 N=N-1 CLOSE(1) CALL SORE(NAME,S,AVE,N,3) OPEN(1,FILE=A:SORT.DAT,STATUS=NEW,* ACCESS=DIRECT,RECL=28)DO 10 I=1,N WRITE(I) NAME(I),(S(I,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论