首页 C语言英文精选Chapter-10ppt课件

C语言英文精选Chapter-10ppt课件

举报
开通vip

C语言英文精选Chapter-10ppt课件chapter10STRUCTURESANDUNIONSAstructureisacollectionofoneormorevariables,possiblyofdifferenttypes,whicharetreatedasaunitinsteadofasseparateentities.10.1structuredefinition10.2structurevariablescitingandinitialization10.3structurearray10.4structurepointer10.5lin...

C语言英文精选Chapter-10ppt课件
chapter10STRUCTURESANDUNIONSAstructureisacollectionofoneormorevariables,possiblyofdifferenttypes,whicharetreatedasaunitinsteadofasseparateentities.10.1structuredefinition10.2structurevariablescitingandinitialization10.3structurearray10.4structurepointer10.5linkdispoing---applicationofstructurepointer10.6unionandenumeration10.7typedef10.1STRUCTURETYPEANDDECLARATIONOFSTRUCTUREVARIABLESTHESTRUCTURETYPE,INCLANGUAGE,isthecounterpartas“record”inotheradvancedlanguage.一、questionemergingSTUDENTSCORESMANAGETABLECANOTDEALWITH2DARRAYSDIFFERENTTYEPES!1001ZhangXinM2087911002WangLiF2098961003ChenFongM2186901004LiXiaopenM207786numnamesexagescore1score2二、structuretypedeclarationCommonusage:structstructuretypename{datatypemember1;datatypemember2;…………datatypemembern;};structstudent{intnum;charname[20];charsex;intage;floatscore1;floatscore2;};Typenamenumnamesexagescore1score2structstudentdemonstration:1、therulestoname“structuretypename”and“membername”,aresamewiththevariables’.2、thedefinitionsofvariablescanbeseperatedorinasamelineliketheinstancebeloweg.structdate{intyear,month,day;};3、thedefinitionsofvariablescouldbebasictypesoranotherstructuretypewhichhasbeendeclarated.eg.thetype”birthday”intheeg.Ofstructuretypestd_infoisadefinitedstructuretype--date三、STRUCTUREVARIABLESDECLARATIONStructuretype(userdefinition)Standarttype(systemdefinition)1、indirectdeclaration──firstdeclarethestructuretype,thenthestructurevariablesThesameusagestructstudent{intnum;charname[20];charsex;intage;floatscore1;floatscore2;};structstudentstu1,stu2;numnamesexagescore1score2stu12、directdeclaration(1)definitethestructurevariable,whendefinitingthestructuretype;(2)definitethestructurevariabledirectly;(1)structstudent{intnum;charname[20];……floatscore2;}stu1,stu2;(2)struct{intnum;charname[20];……floatscore2;}stu1,stu2;3、demonstration(1)differstructuretypeandvariable,whicharecompletelydifferentconception,justastypeintandvariableofint(2)membernamesinstructure,maybesameasothervariablesinprogram,standfordifferentobjects[eg10.1]creatastructurerefferingtobasicinformationofastudenttostorethedetailsofastudentstructdate/*datastructuretypemadeofyear,monthandday*/{intyear;intmonth;intday;};structstd_info/*studentinformationstructuretype*/{intnum;/*madeofname,sex,birthday,etc*/charname[12];charsex;structdatebirthday;floatscore1,score2;};numnamesexscore1score2birthdayyearmonthday10.2CITINGANDINITIALIZATIONSOFSTUCTUREVARIABLES[例10.2]makeuseoftheformerstucturetypestructstd_info,todefiniteastructuretypestutostoreandprintthestudentdetails#include“struct.h”structstd_infostu={1002,”ZhangSan”,‘M’,{1980,9,20},98.2,86.5};main(){printf("No:%d\n",stu.num);printf("Name:%s\n",stu.name);printf("Sex:%c\n",stu.sex);printf("Birthday:%d-%d-%d\n",stu.birthday.year,stu.birthday.month,stu.birthday.day);}numnamesexscore1score2birthdayyearmonthdayresult:No:1002Name:ZhangSanSex:MBirthday:1980-9-201、INITIALIZATIONSOFSTUCTUREvariablestructtypestruct_variable={initialvaluelist}eg,structstd_infostu={“000102”,”ZhangSan”,‘M’,{1980,9,20}};note:datatypeofinitialvalueshouldbeconsistentwiththemembersinstructurevariable,ortherewillbeerror.2、citingrulesofstructurevariablememberoperator“.”whilecitingthememberinstructure,useoperator”.”;citingformat:structurevariable.membereg,stu.num;stu.name,etc。NOTE:ifamemberitselfisastructuretype,amultilevelmemberoperationisneededtocitethelowestmember.Expandingformat:structurevariable.member.child-member.….LowestmemberEg.:stu.birthday.yearstu.birthday.monthstu.birthday.daybetakingthelowestmemberisequaltocommonvariableofthesametype.10.3STRUCTUREARRAYSStructurearrays:anarraymadebystructuretypedatawhichisaselementinstructure.Everyarrayelement:includeallmembersofstructure[例10.3]usestructurearraytostoreandprintthestudentscoresmanagetablebelow.stu[0]stu[1]stu[2]stu[3]1001ZhangXinM2087911002WangLiF2098961003ChenFongM2186901004LiXiaopenM207786numnamesexagescore1score2structstudent/*laythedefinitionofstructuretypeoutsidefunction*/{intnum;charname[12];charsex;intage;floatscore1;floatscore2;};structstdentstu[4]={{1001,”ZhangXin”,’M’,20,87,91},{1002,”WangLi”,‘F’,20,98,96},{1003,”ChenFong”,’M’,21,86,90},{1004,”LiXiaopen”,‘M’,20,77,86}};Storeinfile“struct.h”#include"struct.h”main(){inti;/*printlisthead,"□“standsforonebackspace*/printf("No.□□Name□□□□□□□□Sex□Age□soc1□sco2\n");/*outputbasicdetailsof4students*/for(i=0;i<4;i++){printf("%-5d",stu[i].num);printf("%-12s",stu[i].name);printf("%-4c",stu[i].sex);printf("%-4d",stu[i].age);printf("%-5.1f",stu[i].score1);printf("%-5.1f\n",stu[i].score2);}}Runningresult:No.NameSexAgesoc1sco21001ZhangXinM2087911002WangLiF2098961003ChenFongM2186901004LiXiaopenM207786[eg10.4]usearraysofstructureasfuntionparameters#include"struct.h"voidprint_stulist(structstudentstu[]){inti;printf("No.NameSexAgesoc1sco2\n");for(i=0;i<4;i++){printf("%-5d",stu[i].num);printf("%-12s",stu[i].name);printf("%-4c",stu[i].sex);printf("%-4d",stu[i].age);printf("%-5.1f",stu[i].score1);printf("%-5.1f\n",stu[i].score2);}}UseArrayofstructureasformalparametervoidsort(structstudentst[]){inti,j;structstudenttemp;for(i=0;i<4-1;i++)for(j=i+1;j<4;j++)if(st[i].score1membernamethoughts:howtoinputeverymemberofstu[i]bykeyboard?10.5linklistdisposing──applicationofstructurepointer10.5.1linklistoverview一.Dynamicdatastructureelementnumberfluctuatesbyprogramrunning.cf.datastructureofstaticstate(eg.array),confirmingitssizewhendefiniting.二.Dynamicdatastructureimplementinvirtueof:1、pointerpointstostructuretype2、structuretypeincludingpointerdatalinklist:asimpledynamicdatastructure.head3125NULL10.5.2creatinglinklist一、descriptionoflinklistnodestructureeg.structnode{intnum;/*dataarea*/structnode*next;/*pointerarea*/};二、functionofdisposinglinklist1、malloc——applymemorystoragevoid*malloc(unsignedintsize)eg.structnode*p;p=(structnode*)malloc(sizeof(structnode));numnextp2、free——setstorageareafreevoidfree(void*p)三、createlinklist[例10.6]accordingtoaseriesofnonnegativeintegers,inputbykeyboard,tocreatealinklist,andoutputthevalueofeverydataareabyordereg:input13250,createlinklistsuchas:3125NULLhead1325NULLhead/*1.creatnewnode,pointedbyheadpointer*/head=(structnode*)malloc(LEN);last=head;/*tailpointerpointstonodeoftail*/headlast/*2.inputx;createnewnodep;storextonumareaofnodep*/scanf("%d",&x);p=(structnode*)malloc(LEN);p->num=x;/*3.addptothelinklisttail*/last->next=p;1headlastp1headplast/*4.lastmovebackwards*/last=p;1headlastpRepeat2~4,whenx≤0132head5NULLlast/*setpointerareaNULLwhichwaspointedbytailnodepointer,headpointermovebackwards(deletingheadnode)*/last->next=NULL;head=head->next;main(){structnode*head,*p,*last;intx;head=(structnode*)malloc(LEN);last=head;while(1){scanf("%d",&x);if(x<=0)break;p=(structnode*)malloc(LEN);p->num=x;last->next=p;last=p;}last->next=NULL;head=head->next;#defineNULL0#defineLENsizeof(structnode)structnode{intnum;structnode*next;};p=head;head=head->next;free(p);132head5NULL/*outputlinklist*/printf(“dataofthelinklistare:”)p=head;while(p!=NULL){printf("%5d",p->num);p=p->next;}printf("\n");getch();}Runningresult:13250dataofthelinklistare:1325Q:make2functionsforcreatinglinklistandoutputlinklist:1.structnode*creat(void)2.voidprint(structnode*head)structnode*creat(void)/*createlinklistfunction*/{structnode*head,*p,*last;intx;head=(structnode*)malloc(LEN);last=head;while(1){scanf("%d",&x);if(x<=0)break;p=(structnode*)malloc(LEN);p->num=x;last->next=p;last=p;}last->next=NULL;p=head;head=head->next;free(p);return(head);}2、outputlinklist1、installlinklist四、realizingbyfunction:voidprint(structnode*head)/*outputlinklistfunction*/{structnode*p;p=head;while(p!=NULL)/*traversingthelinklist*/{printf("%5d",p->num);p=p->next;}printf("\n");getch();}main(){structnode*head;printf("inputdatatocreatlinklist(endby<=0):\n");head=creat();printf("thedataoflinklist:\n");print(head);}Q:computingthemaxinumandmininumofthedatanode10.5.3insertoperationtolinklist[eg10.8]createafunctioninsert()torealizeinsertinganewnodewhichdataisxaftertotheIstnodewhichispointedbyhead.analysis:comonsituationpre-inserted:after-inserted:standartconsideration:alongthepointerareaofthenodetofindtheistnode,finallyinsertnewnodeaftertheistnodebylinklistheadpointerhead1325NULL44ps132head5NULLSpecialsituation:1、nulllistpre=inserted:head=NULLafter-inserted:2、i=0pre-inserted:after-inserted:3、iout-of-range(i>thenumberofnode)disposingmanner:(1)error(2)inserttothetailhead4NULL4s132head5NULLhead4125NULL3structnode*insert(structnode*head,inti,intx){structnode*s,*p;s=(structnode*)malloc(LEN);s->num=x;if(head==NULL){head=s;s->next=NULL;}/*1、inserttothenulllinklist*/elseif(i==0)/*non-nulllinklist*/{s->next=head;head=s;}/*2、newnodeasnewheadnodeoflinklist*/else{p=head;/*lookuptheistnode(pointedbyp)*/for(;p!=NULL&&i>1;p=p->next,i--);if(p==NULL)/*3、errorout-of-range*/printf("Outoftherange,can'tinsert!\n");else/*4、commonsituation:ppointtotheistnode*/{s->next=p->next;p->next=s;}}return(head);}main(){structnode*head;inti,x;printf("inputdatatocreatlinklist(endby<=0):\n");head=creat();printf("thedataoflinklist:\n");print(head);printf("insert:i,x=");scanf("%d%d",&i,&x);insert(head,i,x);printf("thedataoflinklistafterinserted:\n");print(head);}10.5.4thedeleteoperationtolinklist[eg10.8]designafunctiondelete(),todeletethenodewhosedataisxinthelinklist。Commonsituation:Pre-deleted:After-deleted:q=head;p=q->next;/*lookupthenodewhosevalueisx*/for(;p->num!=x&&p!=NULL;q=p,p=p->next);if(p!=NULL)/*iffindit,ppointstothex,qpointstotheearlierone*/{q->next=p->next;free(p);}132head5NULLhead1325NULL4qpespescial:1、NULLlisthead=NULLerrorinformation2、deletetheheadnodepre-deleted:after-deleted:3、nosuchnodeerrorinformationhead4125NULL3head125NULL3structnode*delete_list(structnode*head,intx){structnode*p,*q;if(head==NULL)/*1、blanklist*/printf("Error!Thelistisempty.\n");elseif(head->num==x)/*2、deletethefirstnode*/head=head->next;else{q=head;p=q->next;for(;p->num!=x&&p!=NULL;q=p,p=p->next);if(p==NULL)/*3、notexist*/printf("Error!Thenumbeisnotexsist.\n");else{q->next=p->next;free(p);}/*deleteunheadednode*/}return(head);}10.5.5colligatedexample:menuprogramdesigning/*=======sortedlink_listoperater=======*//*DesignedbySunQiaoping*/#include"stdio.h";#defineNULL0#defineLENsizeof(structnode)structnode{intnum;structnode*next;};charmenu(void);voidprint(structnode*head);structnode*insert_sortedlist(structnode*head,intx);structnode*creat_sortedlist(void);structnode*delete_list(structnode*head,intx);main(){structnode*head=NULL;inti,x,flag=1;charch;do{ch=menu();clrscr();switch(ch){case'1':head=creat_sortedlist();break;case'2':printf("inputanumbertoinsert.x=");scanf("%d",&x);head=insert_sortedlist(head,x);break;case'3':printf("inputanumbertodelete.x=");scanf("%d",&x);head=delete_list(head,x);break;case'4':print(head);break;case'0':flag=0;}}while(flag==1);}/*========menu========*/charmenu(void){charch;clrscr();printf("MENU\n");/*puts()*/printf("==================\n");printf("1.creat\n");printf("2.insert\n");printf("3.delete\n");printf("4.print\n");printf("0.exit\n");printf("==================\n");printf("Inputyourchoice(0,1,2,3,4):");ch=getchar();return(ch);}/*========insert========*/structnode*insert_sortedlist(structnode*head,intx){structnode*s,*p,*q;s=(structnode*)malloc(LEN);s->num=x;if(head==NULL)/*inserttoablanklist*/{head=s;s->next=NULL;}elseif(x<=head->num)/*inserttoheadoflist*/{s->next=head;head=s;}else{q=head;p=q->next;/*lookuptheplacetoinsert*/for(;p!=NULL&&x>p->num;q=p,p=p->next);s->next=p;/*insertafterqandaheadofp*/q->next=s;}return(head);}Pre-inserted:After-inserted:head1368NULL44qs136head8NULLp/*========creat========*/structnode*creat_sortedlist(void){structnode*head;intx;printf("inputdatatocreatlinklist(endby<=0):\n");head=NULL;while(1){scanf("%d",&x);if(x<=0)break;head=insert_sortedlist(head,x);}return(head);}10.6introductiontounionandenum10.6.1union1.conceptionseveralvariablesofdifferenttypeoccupythesamesegmentofstorage.2.Definitionofunioncommonsituation:unionu_name{memberlist};eg.uniondata{inti;charch;floatf;};Sameasdefinitionofstructuretype3.DefinitionofSharingvariables(1)indirectdefinitioneg:uniondataun1,un2,un3;(2)directdefiniton──definitevariableswhendefinitingtypeeg.union[data]{inti;charch;floatf;}un1,un2,un3;4.Thestoragelengthoccupiedbysharingvariables:thelengthoflongestmember5.Citingtosharingvariables──citingonebyone例如:un1.i、un1.ch、un1.f5.characteristic(1)Systemusestheoverlayingtechonologytorealizememorysharingofthesharingvariables’members,soanytimethereisonlyonemembervaluetostoreandbetake.eg,ifun1.i=1,un1.ch=‘c’,un1.f=3.14,un1.fisthevalidmember.(2)TheaddressofSharingvariableisthesameasthatofeverymember.eg,&un1=&un1.i=&un1.ch=&un1.f(3)Cannotinitializesharingvariable(note:structurevariableispermitted);norusingsharingvariableasfunctionparameter,neithernorreturningasharingdatabyfunction,butit’spermittedtouseapointerpointedtosharingvariable.(4)Sahringtypecanbeusedinstructuredefinition,thereverseisok!10.6.2enumeration1.Enumerationdefinitionenumweekdays{Sun,Mon,Tue,Wed,Thu,Fri,Sat};enum_nameenum_element/enum_cv2.Enumeratedvariabledefinition(1)indirectdefinitionenumweekdaysworkday;(2)directdefinitionenum[weekdays]{Sun,Mon,Tue,Wed,Thu,Fri,Sat}workday;3.demonstration(1)uesedforlimiteddata.eg:1week7days,1years12months,5colors。(2)picktheelementupinlistasenumeration,whichisexplainedbyprogram.eg,notbecausewriteas“sun”,thatstandsfor“Sunday”.actually,enumelementcanbestandedbyanyname.(3)Enumelementislimitedasliteral──startby0socomparationisvalid.Comparationrules:thebiggerthenumberis,thebiggeritis.eg,inlastinstance,Sun=0、Mon=1、……、Sat=6,soMon>Sun、Satisthebiggest。(4)enum_elementischangable.whiledefiniting,itisspecifiedbyprogram.eg,definiteenumweekdays{Sun=7,Mon=1,Tue,Wed,Thu,Fri,Sat};soSun=7,Mon=1,beginwithTue=2,increaseby1。10.7TypedefCprovidesafacilitycalledtypedefforcreatingnewdatatypenames.Forexample,thedeclarationtypedeffloatREAL;/*creatnewdatatypenamerealforfloat*/REALx,y;/*definitethetypeofx,yasreal*//*itmeansthetypeofxandyisfloat*/[eg10.10]definitethealiasofstructurestructdateasDATE。structdate{intyear,month,day;};typedefstructdateDATE;DATAt,*p;equalto:typedefstructdate{intyear,month,day;}DATE;DATAt,*p;demonstration:1、todefiniteanaliastoaexistvariableusingtypedefwon’tcreatanewtype.2、differencebetweentypedefand#define:(1)typedefisdisposingwhencompiling;(2)#defineisdispoingwhenpreprocessing,asacounterpart
本文档为【C语言英文精选Chapter-10ppt课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
知识改变命运的轨迹
Java开发工程师
格式:ppt
大小:193KB
软件:PowerPoint
页数:51
分类:
上传时间:2023-01-09
浏览量:1