第10章-結(jié)構(gòu)體與共用體_第1頁(yè)
第10章-結(jié)構(gòu)體與共用體_第2頁(yè)
第10章-結(jié)構(gòu)體與共用體_第3頁(yè)
第10章-結(jié)構(gòu)體與共用體_第4頁(yè)
第10章-結(jié)構(gòu)體與共用體_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10章結(jié)構(gòu)體與共用體第10章_結(jié)構(gòu)體與共用體ppt課件(全)第10章結(jié)構(gòu)體與共用體10.1結(jié)構(gòu)體類(lèi)型的定義10.2結(jié)構(gòu)體類(lèi)型變量10.3結(jié)構(gòu)體數(shù)組10.4結(jié)構(gòu)體和指針10.5結(jié)構(gòu)體和函數(shù)10.6鏈表10.7共用體10.8枚舉10.9用typedef定義類(lèi)型第10章_結(jié)構(gòu)體與共用體ppt課件(全)numnamesexageScoreadrr041000LiPingM1878Beijing041001LiuYiF2088Jilin041002YaoLiM1990Beijing第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.1結(jié)構(gòu)體類(lèi)型的定義一般形式:struct結(jié)構(gòu)體名{結(jié)構(gòu)體成員表};structstudent

{intnumber;charname[20];charsex;intage;floatscore;charaddr[30];

};注意:(1)定義了一種類(lèi)型,不是變量。(2)成員可以是任意類(lèi)型,(3)最后的分號(hào)“;”不能省略。(4)可以嵌套定義,如:numnamesexageScoreadrr041000LiPingM1878Beijing041001LiuYiF2088Jilin041002YaoLiM1990Beijing第10章_結(jié)構(gòu)體與共用體ppt課件(全)structdate{intyear;intmonth;intday;};structstu{longintnumber;charname[20];charsex;

structdatebirthday;floatscore[3];charaddress[30];};第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.2結(jié)構(gòu)體類(lèi)型變量10.2.1結(jié)構(gòu)體類(lèi)型變量的定義1先定義類(lèi)型,再定義變量。

struct結(jié)構(gòu)體名變量名等;2.在定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義變量

struct結(jié)構(gòu)體名{成員表}變量名表列;3.直接定義結(jié)構(gòu)體類(lèi)型變量struct{成員表}變量名表列;score[3]numname[20]sexbirthdayaddr[30]s1地址如:structstus1,s2;例如:structst{intnum;charname[20];floatscore;}s1,s2;例如:struct{intnum;charname[20];floatscore;}s1,s2;第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.2.2結(jié)構(gòu)體變量的引用結(jié)構(gòu)體變量名.成員名例如:structdate{intyear;intmonth;intday;}structexample{intnum;charname[20];structdatebir;}s1,s2;各成員的引用形式如下:s1.num=101;s2.num=s1.num+1;strcpy(,”wang”);s1.bir.year=1985;注意:結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體類(lèi)型結(jié)構(gòu)體變量名={初始值表};例如:structstudent{charname[10];floatscore[3];}stu={“wang_li”,81,77,96};第10章_結(jié)構(gòu)體與共用體ppt課件(全)【例10.1】輸入某學(xué)生的姓名、年齡和5門(mén)功課成績(jī),計(jì)算平均成績(jī)并輸出。程序運(yùn)行情況:wang_li21↙8277916885↙wang_li2182.077.091.068.085.0average=80.6第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.3結(jié)構(gòu)體數(shù)組10.3.1結(jié)構(gòu)體數(shù)組的定義與初始化1.結(jié)構(gòu)體數(shù)組的定義例如:structstudent{intnum;charname[20];charsex;intage;floatscore[3];};structstudent

stu[10];2.結(jié)構(gòu)體數(shù)組的初始化structstudent{intnum;charname[20];charsex;intage;floatscore[3];}stu[2]={{1101,”wangli”,’M”,21,75,82,94},

{1102,”liping”,’F’,20,82,79,90}

};注意:定義數(shù)組stu時(shí),數(shù)組長(zhǎng)度可以不指定,如:stu[]={{......},{......}};第10章_結(jié)構(gòu)體與共用體ppt課件(全)

10.3.2結(jié)構(gòu)體數(shù)組的引用下面通過(guò)一個(gè)例子來(lái)說(shuō)明結(jié)構(gòu)體數(shù)組的引用。【例10.2】輸入3個(gè)復(fù)數(shù)的實(shí)部和虛部放在一個(gè)結(jié)構(gòu)體數(shù)組中,根據(jù)復(fù)數(shù)模由大到小順序?qū)?shù)組進(jìn)行排序并輸出。(注:復(fù)數(shù)的模=sqrt(實(shí)部*實(shí)部+虛部*虛部))第10章_結(jié)構(gòu)體與共用體ppt課件(全)運(yùn)行結(jié)果:32↙11↙54↙5.00+4.00i3.00+2.00i1.00+1.00i第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.4結(jié)構(gòu)體和指針1.結(jié)構(gòu)體指針變量的定義例如:structstudent{intnum;charname[15];floatscore[3];}stu[10],x,*p;p=&x;

2.結(jié)構(gòu)體指針變量的引用例如:引用結(jié)構(gòu)體變量x的成員有以下3種方法:① x.成員名,如:x.num② (*p).成員名,如:(*p).num③ p->成員名,如:p->num第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.5結(jié)構(gòu)體和函數(shù)10.5.1結(jié)構(gòu)體作函數(shù)參數(shù)1.結(jié)構(gòu)體變量作函數(shù)參數(shù)【例10.4】輸入兩個(gè)復(fù)數(shù),比較這兩個(gè)復(fù)數(shù)模是否相等。#include<stdio.h>#include<math.h>structcomp{floatx,y; floatm;};floatcompare(structcompa,structcompb){a.m=sqrt(a.x*a.x+a.y*a.y);b.m=sqrt(b.x*b.x+b.y*b.y);return(a.m-b.m); }voidmain(){structcompa,b;scanf("%f%f",&a.x,&a.y); scanf("%f%f",&b.x,&b.y); if(compare(a,b)==0)printf("Equal\n");elseprintf("Unequal\n");}程序運(yùn)行:12↙21↙Equal第10章_結(jié)構(gòu)體與共用體ppt課件(全)

2.結(jié)構(gòu)體指針作函數(shù)參數(shù)【例10.5】編寫(xiě)按復(fù)數(shù)模從小到大排序函數(shù)。第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.5.2返回結(jié)構(gòu)體的函數(shù)1.返回結(jié)構(gòu)體數(shù)據(jù)的函數(shù)函數(shù)可以帶回一個(gè)結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)給主調(diào)函數(shù)。【例10.6】輸入一批復(fù)數(shù),查找并輸出模最大的復(fù)數(shù)。編寫(xiě)函數(shù)完成查找功能。第10章_結(jié)構(gòu)體與共用體ppt課件(全)#defineN5#include<stdio.h>#include<math.h>structcomp{floatx,y;floatm;};structcompfind(structcompp[],intn){inti,k=0;floatt=p[0].m;for(i=1;i<n;i++)if(t<p[i].m) {t=p[i].m;k=i; }returnp[k];}voidmain(){structcompa[N],max;inti;for(i=0;i<N;i++)scanf("%f%f",&a[i].x,&a[i].y);a[i].m=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);}max=find(a,N);printf("max=%.1f%+.1fi\n",max.x,max.y);}程序運(yùn)行:11↙13↙3-2↙5-3↙79↙max=7.0+9.0i第10章_結(jié)構(gòu)體與共用體ppt課件(全)2.返回結(jié)構(gòu)體指針的函數(shù)#defineN5#include<stdio.h>#include<math.h>structcomp{floatx,y;floatm;};structcomp*find(structcomp*p,intn){inti,k=0;floatt=p[0].m;for(i=1;i<n;i++)if(t<(p+i)->m) {t=(p+i)->m; k=i; }return(p+k); }voidmain(){structcompa[N],*max; inti;for(i=0;i<N;i++){scanf("%f%f",&a[i].x,&a[i].y);a[i].m=sqrt(a[i].x*a[i].x+a[i].y*a[i].y);}max=find(a,N);printf("max=%.1f%+.1fi\n",max->x,max->y);}程序運(yùn)行:11↙13↙3-2↙5-3↙79↙max=7.0+9.0i第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.6鏈表(簡(jiǎn)介)10.6.1簡(jiǎn)單鏈表head張三李四王五孫六NULL……structstudent{charname[10];floatscore;structstudent*next;};第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.6.2動(dòng)態(tài)鏈表分配庫(kù)函數(shù)1.malloc函數(shù)函數(shù)原型:void

*malloc(unsignedintsize);使用方法:例如:char*x;x=(char*)malloc(10);第10章_結(jié)構(gòu)體與共用體ppt課件(全)2.calloc函數(shù)函數(shù)原型:void

*calloc(unsignedintn,unsignedintsize);使用方法:例如:float*x;x=(float*)calloc(10,4);第10章_結(jié)構(gòu)體與共用體ppt課件(全)3.free函數(shù)函數(shù)原型:void

free(void*p);使用方式:例如:float*x;x=(float*)calloc(10,4);……free(x);第10章_結(jié)構(gòu)體與共用體ppt課件(全)9.6.3單向鏈表的基本操作

建立鏈表遍歷鏈表將節(jié)點(diǎn)插入到鏈表刪除鏈表第10章_結(jié)構(gòu)體與共用體ppt課件(全)例:有以下結(jié)構(gòu)體說(shuō)明和變量定義,如圖所示,structnode{intdata;structnode*next;}*p,*q,*r;指針p、q、r分別指向此鏈表中的三個(gè)連續(xù)結(jié)點(diǎn)?,F(xiàn)要將q所指結(jié)點(diǎn)從鏈表中刪除,同時(shí)要保持鏈表的連續(xù),以下不能完成指定操作的語(yǔ)句是A)p->next=q->next;B)p->next=p->next->next;C)p->next=r;D)p=q->next;第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.7共用體1.共用體變量的定義union共用體名{共用體成員表};(1)先定義共用體類(lèi)型,再定義共用體變量例如:uniondata{inti;charch;floatf;};uniondataa,b,c;第10章_結(jié)構(gòu)體與共用體ppt課件(全)(2)在定義公用體類(lèi)型的同時(shí)定義變量例如:uniondata{inti;charch;floatf;}a,b,c;(3)不定義共用體類(lèi)型名,直接定義變量例如:union{inti;charch;floatf;}a,b,c;第10章_結(jié)構(gòu)體與共用體ppt課件(全)2.共用體變量的引用

共用體變量的引用方式與結(jié)構(gòu)體變量相同,可以使用以下3種形式之一:(1)共用體變量名.成員名。(2)指針變量名->成員名。(3)(*指針變量名).成員名。例如,對(duì)于前面所定義的共用體變量a,用以下賦值語(yǔ)句:a.i=1;a.ch=’$’; a.f=1.5;第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.8枚舉

如果一個(gè)變量的值只有幾種可能的值,可以定義為枚舉類(lèi)型。所謂“枚舉(enumeration)”是指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值的范圍內(nèi)。

1.枚舉類(lèi)型的定義枚舉類(lèi)型

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論