linux fortran 结构体,Fortran结构体.ppt

《Fortran结构体.ppt》由会员分享,可在线阅读,更多相关《Fortran结构体.ppt(15页珍藏版)》请在皮匠网上搜索。

1、第九章结构体9.1派生类数据类型格式:TYPEACCESS:派生类型名字分量表ENDTYPE派生类名ACCESS:访问方式PRIVATE(私有的)PUBLIC(公共的)默认方式为PUBLIC。分量表:该类型中的成员项每项要有类型说明。P177例TYPESTUDENTCHARACTER(15)NAMEINTEGERNUMLOGICALSEXCHARACTER(30)ADDRESSENDTYPE9.2结构体变量的定义与引用一、结构体类型变量的定义格式:TYPE(派生类型名)结构体变量名W:TYPE(STUDENT):S1S2结构体类型可以嵌套定义即结构体类型的成员也可以是另一个结构体类型的变量。P。

2、177例TYPESTUDENTRECORDCHARACTER(15)NAMEINTEGERNUMLOGICALSEXCHARACTER(30)ADDRESSENDTYPETYPESTUDENTTOGETHERTYPE(STUDENTRECORD):STUDENTREALMATHREALENGLISHREALCHINESEENDTYPE若定义STUDENTT0GETHER结构体变量STYPE(STUDENTTOGETHER):S结构体变量S包含:三个实型变量MATHENGLSH、CHINESE和一个结构体变量STUDENT而STUDENT又包含NAME、NUM、SEX、ADDRESS四个成员二、。

3、结构体成员的引用结构体名%成员名结构体名.成员名如:S1.NAME、S1NUMS2%NAME、S2%NUMSOSTUDENTYONUM9.3结构体变量的赋值用赋值语句给结构体成员赋值P178例9.1职工工资表包含的数据有:姓名、性别、家庭住址、工资等现计算三个职工工资的平均值。TYPECLERKCHARACTER(15)NAMELOGICALSEXCHARACTER(30)ADDRESSINTEGERSAIENDTYPETYPE(CLERK:SIS2S3S1.SAL=800!也可用输入语句READS1.SALS2%SAL=900S3.SAL=700AVER=(SI%OSAL+S2.SAL+S3。

4、.SAL3PRINT三个职工的平均工资为:AVEREND二、定义变量的同时赋值格式TYPE(派生数据类型名):结构体变量名派生数据类型名(成员初值表)例如:TYPETEACHERCHARACTER(12)NAMELOGICALSNDTYPETYPE(TEACHER):SI=TEACHER(WUTRUE.)S2S3赋值时所给的值类型和个数应与结构体变量定义中各成员的类型与个数保持一致。可以将一个结构体变量的值直接赋给另外一个结构体变量P180例:INTEGERSTYPESTUDENTRECORDCHARACTER(15)NAMEINTEGERNUMLOGICALSEXCHARACTER(30)A。

5、DDRESSENDTYPETYPE(STUDENTRECORD):SlS2SI=STUDENTRECORD(ABCD20TRUECHANGSHA)S2=S1S=S2NUM+S1%NUMPRINTSEND9.4结构体数组般格式TYPE(派生类型名)DIMENSION(维数说明符)结构体数组名tTYPE(STUDENT)DIMENSION(100):STUP183例:职工信息:职工号、职工姓名、年龄、工资职工150人存储信息后统计工资低于500元的职工数并输出相关信息programclerkrecordimplicitnoneintegerkitypeclerk!定义结构体类型integernum。

6、character(15)namerealsalendtypeclerktype(clerk)dimension(150):c!定义结构体数组k=0Print输入职工号num:doi=1150readcl(i).numenddorint输入职工姓名namedoi=1150readcl(i).nameenddoprint输入职工工资sadoi=1150readcl(i).salenddodoi=1150if(cl(i).sal500then!打印工资STRE(%OMARKTHENTEMP=STRESTRE=STREOSTRE(J=TEMPENDIFENDDOENDDOEND!插入算法SUBROU。

7、TINESORT_INSERT(STRENEWNtypestudentcharacter(15):nameinteger:MARKnteger:gradeendtypestudenttype(student:stre(N+1)!说明数组N+1=11ype(student):newIntegerinji=1dowhile(stre(i%MARKnew%oMARKandi=N)i=i+1enddodoj=Ni-1stre(j+1=stre(jenddostre(i=newdenc!顺序查找SUBROUTINESORTSEARCH(STRENKEYTYPESTUDENTCHARACTER(15NAM。

8、EINTEGERMARKINTEGERGRADEENDTYPESTUDENTTYPE(STUDENT:STRE(NINTEGERLNKEYDOWHILE(STRE(%MARK.NE.KEY).AND(LEN)I=I+1ENDDOIF(ENTHENPRINT“找到姓名:STRE(D)%NAME成绩:STRE(%GRADEELSEPRINT查无此人ENDIEENDSUBROUTINEDEL(STREDEKEYNTYPESTUDENTCHARACTER(15)NAMEINTEGERMAREINTEGERGRADEENDTYPESTUDENTTYPE(STUDENT)DIMENSIONN:STRETY。

9、PE(STUDENT):TEMPINTEGERLNJDEKEYI=1DOWHILE(STRE(%MARK.NE.DEKEYAND(ILEN)=l+1ENDDOIF(GT.NTHENPRINT学生记录没找到无法删除!ELSETEMP=STRE()!TEMP为一个临时记录用于存放待删记录DOJ=LN-1STREO=STRE(+1)ENDDOPRINT删除的记录为:TEMP%NAMETEMP%MARKTEMP%GRADEENDIFENDPROGRAMSTUDENTRECORDS!主程序TYPESTUDENTCHARACTER(15)NAMEINTEGERMARKINTEGERGRADEENDTYPESTUDENTINTEGERPARAMETER:STNUM=5!代表要处理的学生数TYPE(STUDENT)DIMENSION(STNUM+1:STRETYPE(STUDENT):NEW1PRINT请输入学生有关的信息DOI=lSTNUMREADSTRE(%NAMESTRE(%MARKSTRE%GRADEENDDOCALLSORT(STREStnum)PRINT排序后的结果信息DOI=l.STNUMprintNAMEMARKGRADEprintSTRE(%NAMESTRE()%MARKSTRE(%GRADEENDDOPRINT“请输入待处理的学生有关的信息READ().CALLEND。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值