




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第10章結(jié)構(gòu)體與共用體第10章_結(jié)構(gòu)體與共用體ppt課件(全)第10章結(jié)構(gòu)體與共用體10.1結(jié)構(gòu)體類型的定義10.2結(jié)構(gòu)體類型變量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定義類型第10章_結(jié)構(gòu)體與共用體ppt課件(全)numnamesexageScoreadrr041000LiPingM1878Beijing041001LiuYiF2088Jilin041002YaoLiM1990Beijing第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.1結(jié)構(gòu)體類型的定義一般形式:struct結(jié)構(gòu)體名{結(jié)構(gòu)體成員表};structstudent
{intnumber;charname[20];charsex;intage;floatscore;charaddr[30];
};注意:(1)定義了一種類型,不是變量。(2)成員可以是任意類型,(3)最后的分號“;”不能省略。(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)體類型變量10.2.1結(jié)構(gòu)體類型變量的定義1先定義類型,再定義變量。
struct結(jié)構(gòu)體名變量名等;2.在定義結(jié)構(gòu)體類型的同時定義變量
struct結(jié)構(gòu)體名{成員表}變量名表列;3.直接定義結(jié)構(gòu)體類型變量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)體類型結(jié)構(gòu)體變量名={初始值表};例如:structstudent{charname[10];floatscore[3];}stu={“wang_li”,81,77,96};第10章_結(jié)構(gòu)體與共用體ppt課件(全)【例10.1】輸入某學(xué)生的姓名、年齡和5門功課成績,計算平均成績并輸出。程序運(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ù)組長度可以不指定,如:stu[]={{......},{......}};第10章_結(jié)構(gòu)體與共用體ppt課件(全)
10.3.2結(jié)構(gòu)體數(shù)組的引用下面通過一個例子來說明結(jié)構(gòu)體數(shù)組的引用?!纠?0.2】輸入3個復(fù)數(shù)的實(shí)部和虛部放在一個結(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】輸入兩個復(fù)數(shù),比較這兩個復(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】編寫按復(fù)數(shù)模從小到大排序函數(shù)。第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.5.2返回結(jié)構(gòu)體的函數(shù)1.返回結(jié)構(gòu)體數(shù)據(jù)的函數(shù)函數(shù)可以帶回一個結(jié)構(gòu)體類型的數(shù)據(jù)給主調(diào)函數(shù)?!纠?0.6】輸入一批復(fù)數(shù),查找并輸出模最大的復(fù)數(shù)。編寫函數(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鏈表(簡介)10.6.1簡單鏈表head張三李四王五孫六NULL……structstudent{charname[10];floatscore;structstudent*next;};第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.6.2動態(tài)鏈表分配庫函數(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)體說明和變量定義,如圖所示,structnode{intdata;structnode*next;}*p,*q,*r;指針p、q、r分別指向此鏈表中的三個連續(xù)結(jié)點(diǎn)?,F(xiàn)要將q所指結(jié)點(diǎn)從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是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)先定義共用體類型,再定義共用體變量例如:uniondata{inti;charch;floatf;};uniondataa,b,c;第10章_結(jié)構(gòu)體與共用體ppt課件(全)(2)在定義公用體類型的同時定義變量例如:uniondata{inti;charch;floatf;}a,b,c;(3)不定義共用體類型名,直接定義變量例如:union{inti;charch;floatf;}a,b,c;第10章_結(jié)構(gòu)體與共用體ppt課件(全)2.共用體變量的引用
共用體變量的引用方式與結(jié)構(gòu)體變量相同,可以使用以下3種形式之一:(1)共用體變量名.成員名。(2)指針變量名->成員名。(3)(*指針變量名).成員名。例如,對于前面所定義的共用體變量a,用以下賦值語句:a.i=1;a.ch=’$’; a.f=1.5;第10章_結(jié)構(gòu)體與共用體ppt課件(全)10.8枚舉
如果一個變量的值只有幾種可能的值,可以定義為枚舉類型。所謂“枚舉(enumeration)”是指將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。
1.枚舉類型的定義枚舉類型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海洋服務(wù)合作協(xié)議書
- 新型保安服務(wù)模式的探索與創(chuàng)新計劃
- 班級經(jīng)驗(yàn)分享會的開展計劃
- 培養(yǎng)學(xué)生判斷力與批判性思維計劃
- 增強(qiáng)圖書館開放日活動效果計劃
- 如何應(yīng)對財務(wù)恐懼癥計劃
- 經(jīng)理績效目標(biāo)規(guī)劃計劃
- 美術(shù)欣賞與文化傳播課程大綱計劃
- 幼兒心理健康關(guān)懷計劃
- 2025年藝術(shù)表演場館服務(wù)項(xiàng)目建議書
- 特種設(shè)備及重要設(shè)備安全管理制度
- DB3502T052-2019 家政服務(wù)規(guī)范 家庭搬家
- 《自主神經(jīng)系統(tǒng)》課件
- 2025集團(tuán)公司內(nèi)部借款合同范本
- 遼寧省名校聯(lián)盟2025屆高三上學(xué)期1月份聯(lián)合考試語文試題(含答案)
- 2025年山西地質(zhì)集團(tuán)社會招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2025學(xué)年遼寧省沈陽市沈河區(qū)七年級(上)期末英語試卷(含答案)
- 前牙即刻種植的臨床應(yīng)用
- 2024-2025學(xué)年初中七年級上學(xué)期數(shù)學(xué)期末綜合卷(人教版)含答案
- 體育活動策劃與組織課件
- 公司違規(guī)違紀(jì)連帶處罰制度模版(2篇)
評論
0/150
提交評論