收藏 分销(赏)

Fortran结构体PPT课件.ppt

上传人:可**** 文档编号:766697 上传时间:2024-03-08 格式:PPT 页数:15 大小:52KB
下载 相关 举报
Fortran结构体PPT课件.ppt_第1页
第1页 / 共15页
Fortran结构体PPT课件.ppt_第2页
第2页 / 共15页
点击查看更多>>
资源描述
第九章第九章 结结构体构体9.1 9.1 派生派生类类数据数据类类型型格式:格式:TYPETYPE,ACCESS:ACCESS:派生派生类类型名字型名字 分量表分量表 END TYPE END TYPE 派生派生类类名名 ACCESSACCESS:访问访问方式,方式,PRIVATEPRIVATE(私有的)(私有的)PUBLIC PUBLIC(公共的)(公共的)默默认认方式方式为为 PUBLIC PUBLIC。分量表分量表:该类该类型中的成型中的成员项员项,每,每项项要有要有类类型型说说明。明。1P177 例:例:TYPE STUDENT CHARACTER(15)NAME INTEGER NUM LOGICAL SEX CHARACTER(30)ADDRESSEND TYPE 9.2 9.2 结结构体构体变变量的定量的定义义与引用与引用一、一、结结构体构体类类型型变变量的定量的定义义格式:格式:TYPE(派生(派生类类型名)型名):结结构体构体变变量名量名例:例:TYPE(STUDENT):S1,S22 结结构体构体类类型可以嵌套定型可以嵌套定义义,即,即结结构体构体类类型的成型的成员员也可以也可以是另一个是另一个结结构体构体类类型的型的变变量。量。P177 P177 例:例:TYPE STUDENTRECORD CHARACTER(15)NAME INTEGER NUM LOGICAL SEX CHARACTER(30)ADDRESSEND TYPETYPE STUDENTTOGETHER TYPE (STUDENTRECORD):STUDENT REAL MATH REAL ENGLISH REAL CHINESEEND TYPE3若定若定义义 STUDENTTOGETHER STUDENTTOGETHER 结结构体构体变变量量 S S:TYPE (STUDENTTOGETHER):S则结则结构体构体变变量量 S 包含:三个包含:三个实实型型变变量量MATH、ENGLISH、CHINESE和一个和一个结结构体构体变变量量STUDENT,而,而STUDENT又包含又包含NAME、NUM、SEX、ADDRESS四个成四个成员员。二、二、结结构体成构体成员员的引用的引用结结构体名构体名%成成员员名名结结构体名构体名.成成员员名名如:如:S1.NAME、S1.NUM S2%NAME、S2%NUM S%STUDENT%NUM49.3 9.3 结结构体构体变变量的量的赋值赋值一、用一、用赋值语赋值语句句给结给结构体成构体成员赋值员赋值P178 P178 例例9.1 9.1 职职工工工工资资表包含的数据有:姓名、性表包含的数据有:姓名、性别别、家庭住址、家庭住址、工工资资等,等,现计现计算三个算三个职职工工工工资资的平均的平均值值。TYPE CLERK CHARACTER(15)NAME LOGICAL SEX CHARACTER(30)ADDRESS INTEGER SALEND TYPETYPE(CLERK):S1,S2,S3 S1.SAL=800 S1.SAL=800 !也可用!也可用输输入入语语句句 READ*,S1.SAL READ*,S1.SAL S2%SAL=900 S2%SAL=900 S3.SAL=700 S3.SAL=700 AVER=(S1%SAL+S2.SAL+S3.SAL)/3 PRINT*,三个三个职职工的平均工工的平均工资为资为:,AVEREND5二、定二、定义变义变量的同量的同时赋值时赋值格式:格式:TYPE(派生数据派生数据类类型名型名):结结构体构体变变量名量名 =派生数据派生数据类类型名(成型名(成员员初初值值表)表)例如:例如:TYPE TEACHER CHARACTER(12)NAME LOGICAL SEXEND TYPE TYPE(TEACHER):S1=TEACHER(“WU,.TRUE.),S2,S3赋值时赋值时,所,所给给的的值类值类型和个数型和个数应应与与结结构体构体变变量定量定义义中各成中各成员员的的类类型与个数保持一致。型与个数保持一致。可以将一个可以将一个结结构体构体变变量的量的值值直接直接赋给赋给另外一个另外一个结结构体构体变变量,量,6P180 例:例:INTEGER STYPE STUDENTRECORD CHARACTER(15)NAME INTEGER NUM LOGICAL SEX CHARACTER(30)ADDRESSEND TYPE TYPE(STUDENTRECORD):S1,S2S1=STUDENTRECORD(ABCD,20,.TRUE.,CHANGSHA)S2=S1S=S2%NUM+S1%NUMPRINT*,SEND79.4 9.4 结结构体数构体数组组一般格式:一般格式:TYPE(派生派生类类型名型名),DIMENSION(维维数数说说明符明符,):结结构体数构体数组组名名 例:例:TYPE(STUDENT),DIMENSION(100):STU8P183 例:例:职职工信息:工信息:职职工号、工号、职职工姓名、年工姓名、年龄龄、工、工资资,职职工工150人,存人,存储储信息后信息后统计统计工工资资低于低于500元的元的职职工数,并工数,并输输出相关信息。出相关信息。program clerkrecordimplicit noneinteger:k,itype clerk !定定义结义结构体构体类类型型 integer num character(15)name real salend type clerk type(clerk),dimension(150):cl !定定义结义结构体数构体数组组k=0Print*,输输入入职职工号工号num:do i=1,150 read*,cl(i).num end do9print*,输输入入职职工姓名工姓名 name do i=1,150 read*,cl(i).nameend doprint*,输输入入职职工工工工资资 sal do i=1,150 read*,cl(i).salend dodo i=1,150 if(cl(i).sal500)then !打印打印 工工资资STRE(J)%MARK)THEN TEMP=STRE(I);STRE(I)=STRE(J);STRE(J)=TEMP ENDIF END DO END DOEND 11!插入算法插入算法SUBROUTINE SORT_INSERT(STRE,NEW,N)type:student character(15):name integer:MARK integer:grade end type student type(student):stre(N+1)!说说明数明数组组,N+1=11 type(student):new Integer i,n,j i=1 do while(stre(i)%MARK new%MARK.and.i=N)i=i+1 end do do j=N,i,-1 stre(j+1)=stre(j)end do stre(i)=newend12!顺顺序序查查找找SUBROUTINE SORT_SEARCH(STRE,N,KEY)TYPE STUDENT CHARACTER(15)NAME INTEGER MARK INTEGER GRADE END TYPE STUDENT TYPE (STUDENT):STRE(N)INTEGER I,N,KEY I=1 DO WHILE(STRE(I)%MARK.NE.KEY).AND.(I.LE.N)I=I+1 ENDDO IF(I=N)THEN PRINT*,“找到,姓名找到,姓名:”,STRE(I)%NAME,成成绩绩:,STRE(I)%GRADE ELSE PRINT*,查查无此人无此人 ENDIFEND13!删删除算法除算法SUBROUTINE DEL(STRE,DEKEY,N)TYPE STUDENT CHARACTER(15)NAME INTEGER MARK INTEGER GRADE END TYPE STUDENT TYPE (STUDENT),DIMENSION(N):STRE TYPE(STUDENT):TEMP INTEGER I,N,J,DEKEY I=1 DO WHILE(STRE(I)%MARK.NE.DEKEY).AND.(I.LE.N)I=I+1 ENDDO IF(I.GT.N)THEN PRINT*,学生学生记录记录没找到,无法没找到,无法删删除!除!ELSE TEMP=STRE(I)!TEMP为为一个一个临时记录临时记录,用于存放待,用于存放待删记录删记录 DO J=I,N-1 STRE(J)=STRE(J+1)ENDDO PRINT*,删删除的除的记录为记录为:,TEMP%NAME,TEMP%MARK,TEMP%GRADE ENDIFEND14PROGRAM STUDENT_RECORDS !主程序!主程序TYPE STUDENT CHARACTER(15)NAME INTEGER MARK INTEGER GRADEEND TYPE STUDENTINTEGER,PARAMETER:STNUM=5 !代表要代表要处处理的学生数理的学生数TYPE (STUDENT),DIMENSION(STNUM+1):STRETYPE(STUDENT):NEW1PRINT*,请输请输入学生有关的信息入学生有关的信息DO I=1,STNUM READ*,STRE(I)%NAME,STRE(I)%MARK,STRE(I)%GRADEEND DOCALL SORT(STRE,stnum)PRINT*,排序后的排序后的结结果信息果信息 DO I=1,STNUM print*,NAME,MARK,GRADE print*,STRE(I)%NAME,STRE(I)%MARK,STRE(I)%GRADEEND DOPRINT*,“请输请输入待入待处处理的学生有关的信息理的学生有关的信息 READ(*,*)CALL END15
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服