还剩5页未读,继续阅读
文本内容:
第四章
1.programmainimplicitnonewrite**Haveagoodtime.write**Thatsnotbad.write**Maryisntmyname.endprogram
2.programmainrealparameter::PI=3implicitnone.14159realradiuswrite**请输入半径长read**radiuswrite*面积=f
8.3radius*radius*PIendprogram
3.programmainimplicitnonerealgradeswrite**请输入成绩read**gradeswrite*调整后成绩为f
8.3SQRTgrades*
10.0endprogram
4.integerabrealrarba=2b=3ra=
2.0rb=
3.0write**b/a!输出1因为使用整数计算小数部分会无条件舍去write**rb/ra!输出
1.
55.programmainimplicitnonetypedistancerealmeterinchcmendtypetypedistance::dwrite**请输入长度:read**d%meterd%cm=d%meter*100d%inch=d%cm/
2.54write*f
8.3米=f
8.3厘米=f
8.3英寸d%meterd%cmd%inchendprogram第五章
1.programmainimplicitnoneintegermoneyrealtaxwrite**请输入月收入read**moneyifmoney1000thentax=
0.03elseifmoney5000thentax=
0.1elsetax=
0.15endifwrite*税金为I8nintmoney*taxendprogram
2.programmainimplicitnoneintegerdaycharacterlen=20::tvwrite**请输入星期几read**dayselectcasedaycase14tv=新闻case25tv=电视剧case36tv=卡通case7tv=电影casedefaultwrite**错误的输入stopendselectwrite**tvendprogram
3.programmainimplicitnoneintegeragemoneyrealtaxwrite**请输入年龄read**agewrite**请输入月收入read**moneyifage50thenifmoney1000thentax=
0.03elseifmoney5000thentax=
0.10elsetax=
0.15endifelseifmoney1000thentax=
0.5elseifmoney5000thentax=
0.7elsetax=
0.10endifendifwrite*税金为I8nintmoney*taxendprogram
4.programmainimplicitnoneintegeryeardayslogicalmod_4mod_100mod_400write**请输入年份read**yearmod_4=MODyear4==0mod_100=MODyear100==0mod_400=MODyear400==0ifmod_
4.NEQV.mod_
100.or.mod_400thendays=366elsedays=365endifwrite*这一年有I3天daysstopendprogram第六章
1.programmainimplicitnoneintegeridoi=15write**Fortranenddostopendprogram
2.programmainimplicitnoneintegerisumsum=0doi=1992sum=sum+ienddowrite**sumstopendprogram
3.programmainimplicitnoneintegerparameter::answer=45integerparameter::max=5integerweightidoi=1maxwrite**请输入体重read**weightifweight==answerexitenddoifi=maxthenwrite**猜对了elsewrite**猜错了endifstopendprogram
4.programmainimplicitnoneintegerparameter::max=10integerirealitemrealansans=
1.0item=
1.0doi=2maxitem=item/realians=ans+itemenddowrite**ansstopendprogram
5.programmainimplicitnoneintegerparameter::length=79characterlen=length::inputoutputintegerijwrite**请输入一个字串read*A79inputj=1doi=1len_triminputifinputi:i/=thenoutputj:j=inputi:ij=j+1endifenddowrite*A79outputstopendprogram第七章
1.programmainimplicitnoneintegerparameter::max=10integeriinteger::amax=/2*ii=110/integer::t!sum是fortran库函数write**realsuma/realmaxstopendprogram
2.integera55!5*5=25integerb234!2*3*4=24integerc3456!3*4*5*6=360integerd-5:5!11integere-3:3-3:3!7*7=
493.programmainimplicitnoneintegerparameter::max=10integerfmaxintegerif1=0f2=1doi=3maxfi=fi-1+fi-2enddowrite*10I4fstopendprogram
4.programmainimplicitnoneintegerparameter::size=10integer::asize=/53648719210/integer::ijinteger::tdoi=1size-1doj=i+1sizeifaiajthen!ai跟aj交换t=aiai=ajaj=tendifenddoenddowrite*10I4astopend
5.a22!1+2-1+2-1*5=7a33!1+3-1+3-1*5=13第八章
1.programmainimplicitnonerealradiusareawrite**请输入半径长read**radiuscallCircleArearadiusareawrite*面积=F
8.3areastopendprogramsubroutineCircleArearadiusareaimplicitnonerealparameter::PI=
3.14159realradiusareaarea=radius*radius*PIreturnendsubroutine
2.programmainimplicitnonerealradiusrealexternal::CircleAreawrite**请输入半径长read**radiuswrite*面积=F
8.3CircleArearadiusstopendprogramrealfunctionCircleArearadiusimplicitnonerealparameter::PI=
3.14159realradiusCircleArea=radius*radius*PIreturnendfunction
3.programmainimplicitnonecallbar3callbar10stopendprogramsubroutinebarlengthimplicitnoneintegerintentin::lengthintegericharacterlen=79::stringstring=doi=1lengthstringi:i=*enddowrite*A79stringreturnendsubroutine
4.programmainimplicitnoneintegerexternal::addwrite**add100endprogramrecursiveintegerfunctionaddnresultsumimplicitnoneintegerintentin::nifn0thensum=0returnelseifn=1thensum=nreturnendifsum=n+addn-1returnendfunction
5.programmainimplicitnoneintegerexternal::gcdwrite**gcd1812endprogramintegerfunctiongcdABimplicitnoneintegerABBIGSMALLTEMPBIG=maxABSMALL=minABdowhileSMALL/=1TEMP=modBIGSMALLifTEMP==0exitBIG=SMALLSMALL=TEMPenddogcd=SMALLreturnendfunction
6.programmainuseTextGraphLibimplicitnoneintegerparameter::maxx=60maxy=20realparameter::StartX=
0.0EndXxinc=EndX-StartX/maxx-1realxintegeripxpycallSetScreen6020callSetCurrentChar*x=StartXdopx=1maxxpy=maxy/2*sinx+maxy/2+1callPutCharpxpyx=x+xincenddocallUpdateScreenstopendprogram第九章
1.programmainimplicitnonecharacterlen=79::filenamecharacterlen=79::bufferintegerparameter::fileid=10integercountinteger::status=0logicalalivewrite**Filename:read*A79filenameinquirefile=filenameexist=aliveifalivethenopenunit=fileidfile=filenameaccess=sequentialstatus=oldcount=0dowhile.true.readunit=fileidfmt=A79iostat=statusbufferifstatus/=0exit!没有资料就跳出循环write*A79buffercount=count+1ifcount==24thenpausecount=0endifenddoelsewrite**TRIMfilenamedoesntexist.endifstopend
2.programmainimplicitnonecharacterlen=79::filenamecharacterlen=79::bufferintegerparameter::fileid=10integeriinteger::status=0logicalalivewrite**Filename:read*A79filenameinquirefile=filenameexist=aliveifalivethenopenunit=fileidfile=filenameaccess=sequentialstatus=olddowhile.true.readunit=fileidfmt=A79iostat=statusbufferifstatus/=0exit!没有资料就跳出循环doi=1len_trimbufferbufferi:i=charicharbufferi:i-3enddowrite*A70bufferenddoelsewrite**TRIMfilenamedoesntexist.endifstopend
3.programmainimplicitnonetypestudentintegerchineseenglishmathsciencesocialtotalendtypetypestudent::stotalintegerparameter::students=20subjects=5integeriopen10file=grades.binaccess=directrecl=1write*7A10座号中文英文数学自然社会总分total=student000000doi=1studentsread10rec=i-1*subjects+1s%chineseread10rec=i-1*subjects+2s%englishread10rec=i-1*subjects+3s%mathread10rec=i-1*subjects+4s%scienceread10rec=i-1*subjects+5s%socials%total=s%chinese+s%english+s%math+s%science+s%socialtotal%chinese=total%chinese+s%chinesetotal%english=total%english+s%englishtotal%math=total%math+s%mathtotal%science=total%science+s%sciencetotal%social=total%social+s%socialtotal%total=total%total+s%totalwrite*7I10isenddowrite*A106F
10.3平均realtotal%chinese/realstudentsrealtotal%english/realstudentsrealtotal%math/realstudentsrealtotal%science/realstudentsrealtotal%social/realstudentsrealtotal%total/realstudentsstopend
4.programmainimplicitnonecharacterlen=79::filenamecharacterlen=79::bufferintegerparameter::fileid=10integeriinteger::status=0logicalalivewrite**Filename:read*A79filenameinquirefile=filenameexist=aliveifalivethenopenunit=fileidfile=filenameaccess=sequentialstatus=olddowhile.true.readunit=fileidfmt=A79iostat=statusbufferifstatus/=0exit!没有数据就跳出循环doi=1len_trimbufferbufferi:i=charicharbufferi:i-modi-13+1enddowrite*A70bufferenddoelsewrite**TRIMfilenamedoesntexist.endifstopend
5.moduletypedeftypestudentinteger::numinteger::ChineseEnglishMathNaturalSocialinteger::totalinteger::rankendtypeendmoduleprogrammainusetypedefimplicitnoneintegerparameter::fileid=10integerparameter::students=20characterlen=80::tempstrtypestudent::sstudents!储存学生成绩typestudent::total!计算平均分数用integerinumerroropenfileidfile=grades.txtstatus=oldiostat=erroriferror/=0thenwrite**Opengrades.txtfail.stopendifreadfileidA80tempstr!读入第一行文字total=student00000000!用循环读入每位学生的成绩doi=1studentsreadfileid*si%numsi%Chinesesi%Englishsi%Mathsi%Naturalsi%Social!计算总分si%Total=si%Chinese+si%English+si%Math+si%Natural+si%Social!累加上各科的分数计算各科平均时使用total%Chinese=total%Chinese+si%Chinesetotal%English=total%English+si%Englishtotal%Math=total%Math+si%Mathtotal%Natural=total%Natural+si%Naturaltotal%Social=total%Social+si%Socialtotal%Total=total%Total+si%Totalenddocallsortsstudents!重新输出每位学生成绩write*8A7座号中文英文数学自然社会总分名次doi=1studentswrite*8I7sienddo!计算并输出平圴分数write*A76F
7.1平均realtotal%Chinese/realstudentsrealtotal%English/realstudentsrealtotal%Math/realstudentsrealtotal%Natural/realstudentsrealtotal%Social/realstudentsrealtotal%Total/realstudentsstopendprogramsubroutinesortsnusetypedefimplicitnoneintegerntypestudent::sntintegerijdoi=1n-1doj=i+1nifsi%totalsj%totalthent=sisi=sjsj=tendifenddoenddoforalli=1:nsi%rank=iendforallendsubroutine第十章
1.integerkind=4::a!4bytesrealkind=4::b!4bytesrealkind=8::c!8bytescharacterlen=10::str!10bytesintegerkind=4pointer::pa!4bytesrealkind=4pointer::pb!4bytesrealkind=8pointer::pc!4bytescharacterlen=10pointer::pstr!4bytestypestudentintegerChineseEnglishMathendtypetypestudent::s!12bytestypestudentpointer::ps!4bytes
2.integertarget::a=1integertarget::b=2integertarget::c=3integerpointer::pp=awrite**p!1p=bwrite**p!2p=cp=5write**c!
53.modulelinklisttypestudentinteger::numinteger::ChineseEnglishMathScienceSocialendtypetypedatalinktypestudent::itemtypedatalinkpointer::nextendtypecontainsfunctionSearchListnumheadimplicitnoneinteger::numtypedatalinkpointer::headptypedatalinkpointer::SearchListp=headnullifySearchListdowhileassociatedpifp%item%num==numthenSearchList=preturnendifp=p%nextenddoreturnendfunctionendmodulelinklistprogramex1016uselinklistimplicitnonecharacterlen=20::filenamecharacterlen=80::tempstrtypedatalinkpointer::headtypedatalinkpointer::ptypestudentallocatable::s:integerierrorsizewrite**filename:read**filenameopen10file=filenamestatus=oldiostat=erroriferror/=0thenwrite**Openfilefail!stopendifallocateheadnullifyhead%nextp=headsize=0read10A80tempstr!读入第一行字符串不需要处理它!读入每一位学生的成绩dowhile.true.read10fmt=*iostat=errorp%itemiferror/=0exitsize=size+1allocatep%nextstat=error!新增下一个数据iferror/=0thenwrite**Outofmemory!stopendifp=p%next!移动到链表的下一个数据nullifyp%nextenddowrite*总共有I3位学生sizeallocatessizep=headdoi=1sizesi=p%itemp=p%nextenddodowhile.true.write**要查询几号同学的成绩read**iifi
1.or.isizeexit!输入不合理的座号write*5A6I3中文si%Chinese英文si%English数学si%Math自然si%Science社会si%Socialenddowrite*座号I3不存在程序结束.istopendprogram
4.moduletypedefimplicitnonetype::datalinkinteger::itypedatalinkpointer::nextendtypedatalinkendmoduletypedefprogramex1012usetypedefimplicitnonetypedatalinkpointer::pheadnextinteger::inerrwrite**InputN:read**nallocateheadhead%i=1nullifyhead%nextp=headdoi=2nallocatep%nextstat=erriferr/=0thenwrite**Outofmemory!stopendifp=p%nextp%i=ienddonullifyp%nextp=headdowhileassociatedpwrite*i5p%ip=p%nextenddo!释放链表的存储空间p=headdowhileassociatedpnext=p%nextdeallocatepp=nextenddostopendprogram第十一章
1.moduleutilityimplicitnoneinterfaceareamoduleprocedureCircleAreamoduleprocedureRectAreaendinterfacecontainsrealfunctionCircleArearrealparameter::PI=
3.14159realrCircleArea=r*r*PIreturnendfunctionrealfunctionRectAreaabrealabRectArea=a*breturnendfunctionendmoduleprogrammainuseUTILITYimplicitnonewrite**area
1.0write**area
2.
03.0stopendprogram
2.moduletime_utilityimplicitnonetype::timeinteger::hourminutesecondendtypetimeinterfaceoperator+moduleprocedureadd_time_timeendinterfacecontainsfunctionadd_time_timeabimplicitnonetypetime::add_time_timetypetimeintentin::abinteger::secondsminutescarryseconds=a%second+b%secondcarry=seconds/60minutes=a%minute+b%minute+carrycarry=minutes/60add_time_time%second=modseconds60add_time_time%minute=modminutes60add_time_time%hour=a%hour+b%hour+carryreturnendfunctionadd_time_timesubroutineinputaimplicitnonetypetimeintentout::awrite**Inputhours:read**a%hourwrite**Inputminutes:read**a%minutewrite**Inputseconds:read**a%secondreturnendsubroutineinputsubroutineoutputaimplicitnonetypetimeintentin::awrite*I3hoursI3minutesI3secondsa%houra%minutea%secondreturnendsubroutineoutputendmoduletime_utilityprogrammainusetime_utilityimplicitnonetypetime::abccallinputacallinputbc=a+bcalloutputcstopendprogrammain
3.modulerational_utilityimplicitnoneprivatepublic::rationaloperator+operator-operator*operator/assignment=operatoroperatoroperator==operator/=outputinputtype::rationalinteger::numdenomendtyperationalinterfaceoperator+moduleprocedurerat__rat_plus_ratendinterfaceinterfaceoperator-moduleprocedurerat__rat_minus_ratendinterfaceinterfaceoperator*moduleprocedurerat__rat_times_ratendinterfaceinterfaceoperator/moduleprocedurerat__rat_div_ratendinterfaceinterfaceassignment=moduleprocedurerat_eq_ratmoduleprocedureint_eq_ratmoduleprocedurereal_eq_ratendinterfaceinterfaceoperatormoduleprocedurerat_gt_ratendinterfaceinterfaceoperatormoduleprocedurerat_lt_ratendinterfaceinterfaceoperator==moduleprocedurerat_compare_ratendinterfaceinterfaceoperator/=moduleprocedurerat_ne_ratendinterfacecontainsfunctionrat_gt_ratabimplicitnonelogical::rat_gt_rattyperationalintentin::abreal::fafbfa=reala%num/reala%denomfb=realb%num/realb%denomiffafbthenrat_gt_rat=.true.elserat_gt_rat=.false.endifreturnendfunctionrat_gt_ratfunctionrat_lt_ratabimplicitnonelogical::rat_lt_rattyperationalintentin::abreal::fafbfa=reala%num/reala%denomfb=realb%num/realb%denomiffbfathenrat_lt_rat=.true.elserat_lt_rat=.false.endifreturnendfunctionrat_lt_ratfunctionrat_compare_ratabimplicitnonelogical::rat_compare_rattyperationalintentin::abtyperational::cc=a-bifc%num==0thenrat_compare_rat=.true.elserat_compare_rat=.false.endifreturnendfunctionrat_compare_ratfunctionrat_ne_ratabimplicitnonelogical::rat_ne_rattyperationalintentin::abtyperational::cc=a-bifc%num==0thenrat_ne_rat=.false.elserat_ne_rat=.true.endifreturnendfunctionrat_ne_ratsubroutinerat_eq_ratrat1rat2implicitnonetyperationalintentout::rat1typerationalintentin::rat2rat1%num=rat2%numrat1%denom=rat2%denomreturnendsubroutinerat_eq_ratsubroutineint_eq_ratintratimplicitnoneintegerintentout::inttyperationalintentin::ratint=rat%num/rat%denomreturnendsubroutineint_eq_ratsubroutinereal_eq_ratfloatratimplicitnonerealintentout::floattyperationalintentin::ratfloat=realrat%num/realrat%denomreturnendsubroutinereal_eq_ratfunctionreduseaimplicitnonetyperationalintentin::ainteger::btyperational::reduseb=gcv_interfacea%numa%denomreduse%num=a%num/breduse%denom=a%denom/breturnendfunctionredusefunctiongcv_interfaceabimplicitnoneintegerintentin::abinteger::gcv_interfaceifminab.eq.0thengcv_interface=1returnendififa==bthengcv_interface=areturnelseifabthengcv_interface=gcvabelseifabthengcv_interface=gcvbaendifreturnendfunctiongcv_interfacerecursivefunctiongcvabresultansimplicitnoneintegerintentin::abinteger::minteger::ansm=modabselectcasemcase0ans=breturncase1ans=1returncasedefaultans=gcvbmendselectreturnendfunctiongcvfunctionrat__rat_plus_ratrat1rat2implicitnonetyperational::rat__rat_plus_rattyperationalintentin::rat1rat2typerational::actact%denom=rat1%denom*rat2%denomact%num=rat1%num*rat2%denom+rat2%num*rat1%denomrat__rat_plus_rat=reduseactreturnendfunctionrat__rat_plus_ratfunctionrat__rat_minus_ratrat1rat2implicitnonetyperational::rat__rat_minus_rattyperationalintentin::rat1rat2typerational::temptemp%denom=rat1%denom*rat2%denomtemp%num=rat1%num*rat2%denom-rat2%num*rat1%denomrat__rat_minus_rat=redusetempreturnendfunctionrat__rat_minus_ratfunctionrat__rat_times_ratrat1rat2implicitnonetyperational::rat__rat_times_rattyperationalintentin::rat1rat2typerational::temptemp%denom=rat1%denom*rat2%denomtemp%num=rat1%num*rat2%numrat__rat_times_rat=redusetempreturnendfunctionrat__rat_times_ratfunctionrat__rat_div_ratrat1rat2implicitnonetyperational::rat__rat_div_rattyperationalintentin::rat1rat2typerational::temptemp%denom=rat1%denom*rat2%numtemp%num=rat1%num*rat2%denomrat__rat_div_rat=redusetempreturnendfunctionrat__rat_div_ratsubroutineinputaimplicitnonetyperationalintentout::awrite**分子:read**a%numwrite**分母:read**a%denomreturnendsubroutineinputsubroutineoutputaimplicitnonetyperationalintentin::aifa%denom/=1thenwrite*I3/I3a%numa%denomelsewrite*I3a%numendifreturnendsubroutineoutputendmodulerational_utilityprogrammainuserational_utilityimplicitnonetyperational::abccallinputacallinputbc=a+bwrite**a+b=calloutputcc=a-bwrite**a-b=calloutputcc=a*bwrite**a*b=calloutputcc=a/bwrite**a/b=calloutputcifabwrite**abifabwrite**abifa==bwrite**a==bifa/=bwrite**a/=bstopendprogrammain
4.modulevector_utilityimplicitnonetypevectorrealxyendtypeinterfaceoperator+moduleprocedurevector_add_vectorendinterfaceinterfaceoperator-moduleprocedurevector_sub_vectorendinterfaceinterfaceoperator*moduleprocedurereal_mul_vectormoduleprocedurevector_mul_realmoduleprocedurevector_dot_vectorendinterfaceinterfaceoperator.dot.moduleprocedurevector_dot_vectorendinterfacecontainstypevectorfunctionvector_add_vectorabtypevectorintentin::abvector_add_vector=vectora%x+b%xa%y+b%yendfunctiontypevectorfunctionvector_sub_vectorabtypevectorintentin::abvector_sub_vector=vectora%x-b%xa%y-b%yendfunctiontypevectorfunctionreal_mul_vectorabrealintentin::atypevectorintentin::breal_mul_vector=vectora*b%xa*b%yendfunctiontypevectorfunctionvector_mul_realabtypevectorintentin::arealintentin::bvector_mul_real=real_mul_vectorbaendfunctionrealfunctionvector_dot_vectorabtypevectorintentin::abvector_dot_vector=a%x*b%x+a%y*b%yendfunctionsubroutineoutputvectypevector::vecwrite*F
6.2F
6.2vecendsubroutineendmoduleprogrammainusevector_utilityimplicitnonetypevectorabca=vector
1.
02.0b=vector
2.
01.0c=a+bcalloutputcc=a-bcalloutputcwrite**a*bendprogrammain。