




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
結(jié)構(gòu)體TeacherteachingdesignCONTENTS
目錄結(jié)構(gòu)體的定義方式結(jié)構(gòu)體變量的引用結(jié)構(gòu)體數(shù)組案例分析仿真演練結(jié)構(gòu)體的定義方式點(diǎn)PART01第一步:定義結(jié)構(gòu)體類型的名稱和成員構(gòu)成第二步:用結(jié)構(gòu)體類型名定義結(jié)構(gòu)體變量定義結(jié)構(gòu)體類型變量struct<結(jié)構(gòu)體類型名>{
<類型標(biāo)識符><成員名1>;
…
<類型標(biāo)識符><成員名n>;};定義結(jié)構(gòu)體變量的格式是:struct<結(jié)構(gòu)體類型名><結(jié)構(gòu)體變量表>;(一)先定義(構(gòu)造)結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體類型變量structstudent{
charname[10];
charno[8];
charsex;
intage;
floatscore;};structstudentstud1,stud2;例如格式舉例structstudent{
charname[10];
charno[8];
charsex;
intage;
floatscore;}stud1,stud2;例如struct<結(jié)構(gòu)體類型名>{<類型標(biāo)識符><成員名1>;…<類型標(biāo)識符><成員名n>;}<結(jié)構(gòu)體變量表>;(二)在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量struct{<類型標(biāo)識符><成員名1>;
…<類型標(biāo)識符><成員名n>;}<結(jié)構(gòu)體變量表>;struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;例如(三)在定義結(jié)構(gòu)體類型時,不設(shè)置結(jié)構(gòu)體名,而是直接定義結(jié)構(gòu)體變量說明:這種形式一般不使用。這種定義格式一定要用大括號把初始化表括起來,不同的成員初值用逗號隔開,且字符要加單引號定界,字符串要加雙引號定界,數(shù)組加大括號定界。說明:staticstructstudent{charname[20];charsex;intage;floatscore;}stu1,stu2={“Wangwu”,’m’,20,88.5};(四)靜態(tài)變量的結(jié)構(gòu)體變量定義格式例如:structstudent{intnum,age;charname[20],sex,addr[30];structstudy{floatChinese,Math,Physics,English;}score;};例如:(五)嵌套定義,即在結(jié)構(gòu)體類型定義中又有結(jié)構(gòu)體類型的成員不要把結(jié)構(gòu)體類型名和結(jié)構(gòu)體變量名混淆起來(2)花括號外的分號不能省略,它標(biāo)示結(jié)構(gòu)體定義語句的終止(4)struct是關(guān)鍵字,作為定義結(jié)構(gòu)體類型的標(biāo)志,后面緊跟的是結(jié)構(gòu)體類型名,由用戶自行定義。(3)花括號內(nèi)是結(jié)構(gòu)體的成員說明表,也稱為數(shù)據(jù)項(xiàng),也稱為成員或分量,用來說明該結(jié)構(gòu)體有哪些成員及它們屬于哪種數(shù)據(jù)類型,占多少個字節(jié),按什么形式存儲,但不會為其分配存儲空間,只有在定義一個結(jié)構(gòu)體變量時,才會為該變量分配內(nèi)存空間。其中成員之間名稱不能相同,但數(shù)據(jù)類型可以相同。(1)補(bǔ)充說明結(jié)構(gòu)體變量的引用PART02動態(tài)存儲的結(jié)構(gòu)體變量,不能在定義時進(jìn)行初始化,只能通過賦值語句,輸入函數(shù)等形式分別對其中的成員賦值。<結(jié)構(gòu)體變量名>.<成員名>成員的引用格式“.”是成員運(yùn)算符,表示對結(jié)構(gòu)體變量的哪個成員進(jìn)行引用,成員運(yùn)算符的優(yōu)先級在所有運(yùn)算中是最高的。結(jié)構(gòu)體變量的引用
如:today.year=2012;如果成員本身又是一個結(jié)構(gòu)體則必須逐級找到最低級的成員進(jìn)行引用。
例如,today.time.second=15;單獨(dú)引用結(jié)構(gòu)體變量的成員1如:nextday=today;結(jié)構(gòu)體變量作為一個整體引用2structclock{inthour,minute,second;};structdate{intyear,month,day;structclocktime;}today,nextday;引用舉例stud2=stud1;要求具有相同的結(jié)構(gòu)體數(shù)據(jù)類型。整體賦值把結(jié)構(gòu)體變量stud1各成員的值分別賦值給結(jié)構(gòu)體變量stud2的各成員成員分別賦值strcpy(,);stud2.score=stud1.score;成員賦值舉例結(jié)構(gòu)體變量的賦值注意:字符數(shù)組之間賦值不能使用賦值運(yùn)算符,必須使用字符串賦值函數(shù)strcpy。scanf("%d,%s,%c,%d,%f,%s\n",&student1);錯誤示例1scanf("%s",);scanf("%f",&stud2.score);正確示例2如果使用scanf函數(shù)接收結(jié)構(gòu)體變量的值,不能直接針對結(jié)構(gòu)體變量接收輸入,要將成員分開接收輸
入結(jié)構(gòu)體變量的輸入和輸出結(jié)構(gòu)體變量的輸出也是被分解到各成員的輸出上,以正確的引用方式和對應(yīng)的類型輸出控制符對應(yīng)即可。例:printf("%s\n",);輸
出sizeof(stud1)的字節(jié)數(shù)為25,sizeof(stud2)的字節(jié)數(shù)也為25。struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;舉例感知結(jié)構(gòu)體變量存儲空間的大小等于結(jié)構(gòu)體類型各成員分量所占字節(jié)數(shù)之和存儲空間計(jì)算結(jié)構(gòu)體變量存儲空間結(jié)構(gòu)體數(shù)組PART03struct<結(jié)構(gòu)體類型名><結(jié)構(gòu)體數(shù)組名>[<長度>];定義格式要定義一個結(jié)構(gòu)體數(shù)組,首先要定義一個結(jié)構(gòu)體類型,然后再把數(shù)組定義為結(jié)構(gòu)體類型。說明先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體數(shù)組格式一定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體數(shù)組格式二結(jié)構(gòu)體數(shù)組的定義structstudent{intnum;charname[20];charsex;
intage;floatscore;}stu[30];structstudentstud[10];格式一舉例structstudent{intnum;charname[20];charsex;intage;floatscore;}stu[30];格式二舉例結(jié)構(gòu)體數(shù)組的定義先定義結(jié)構(gòu)體類型再定義結(jié)構(gòu)體數(shù)組定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體數(shù)組structstudentstud[10];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3]={{101,”WGJ”,’M’,28,88.5,“CS”},{102,”DYH”,’F’,26,88.0,”CS”},{103,”DYC”,’M’,24,78.5,”CZ”}};結(jié)構(gòu)體數(shù)組中每個元素的初始化列表都要用一對花括號括起來以示區(qū)分,花括號之間用逗號相隔結(jié)構(gòu)體數(shù)組的初始化每個元素的初始化表中的數(shù)據(jù)類型要與對一個成員的類型一致<數(shù)組名>[<下標(biāo)號>].<成員名>引用格式在引用數(shù)組元素時,每個元素就是一個結(jié)構(gòu)體變量,要把元素的引用和結(jié)構(gòu)體變量成員的引用結(jié)合起來舉例感知結(jié)構(gòu)體數(shù)組元素的引用stu[1].num=102;表示引用下標(biāo)為1的元素的成員num。案例分析
交流提升PART04main(){structstu{
intnum;char*name;charsex;floatscore;}boy1,boy2;boy1.num=102;="Zhangping";printf("inputsexandscore\n");scanf("%c%f",&boy1.sex,&boy1.score);boy2=boy1;printf("Number=%d\nName=%s\n",boy2.num,);printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);}給結(jié)構(gòu)變量賦值并輸出其值。main(){
structobject{
charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}運(yùn)行結(jié)果One1.7033.25Two2.9056.92Three0.3219.78分析以下結(jié)構(gòu)體數(shù)組初始化程序運(yùn)行后輸出結(jié)果源程序結(jié)構(gòu)體數(shù)組的初始化就是將結(jié)構(gòu)體數(shù)組的每個元素初始化后用“{}”括起來即可main(){structobject{charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}One1.7033.25Two2.9056.92Three0.3219.78運(yùn)行結(jié)果分析以下結(jié)構(gòu)體數(shù)組初始化程序運(yùn)行后輸出結(jié)果源程序main(){inti,c=0;floatave,s=0;for(i=0;i<5;i++){s+=boy[i].score;if(boy[i].score<60)c+=1;}printf("s=%f\n",s);ave=s/5;printf("average=%f\ncount=%d\n",ave,c);}主函數(shù)structstu{intnum;char*name;charsex;floatscore;}boy[5]={{101,"Liping",'M',45},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chengling",'F',87},{105,"Wangming",'M',58},};定義結(jié)構(gòu)體類型并初始化計(jì)算學(xué)生的平均成績和不及格的人數(shù)仿真演練
體驗(yàn)探索PART05源程序選項(xiàng)A)20045537B)20041580C)20042580D)20041703答案B分析:主函數(shù)中定義并初始化了結(jié)構(gòu)體數(shù)組,輸出為數(shù)組中第一個元素的num和第二個數(shù)組元素的TotalScore分析以下程序的運(yùn)行后的輸出結(jié)果#include<string.h>structSTU{
intnum;
floatTotalScore;};main(){
structSTUs[2]={{20041,703},{20042,580}};
printf("%d%3.0f\n",s[0].num,s[1].TotalScore);}C答案structstu{inta;floatb;}stutype;說明語句stutype是定義的結(jié)構(gòu)體類型變量名分析A)struct是結(jié)構(gòu)體類型的關(guān)鍵字B)structstu是用戶定義結(jié)構(gòu)體類型C)stutype是用戶定義的結(jié)構(gòu)體類型名D)a和b都是結(jié)構(gòu)體成員名選項(xiàng)如下說明語句,則下面敘述不正確的是A)1B)2C)8D)11選項(xiàng)若有定義:structdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是(
)題目分析結(jié)構(gòu)體變量所占字節(jié)數(shù)√符合結(jié)
溫馨提示
- 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年中國機(jī)械打漿機(jī)市場調(diào)查研究報告
- 2025年中國機(jī)動車動力系統(tǒng)市場調(diào)查研究報告
- 2025至2031年中國脫硫醇活化劑行業(yè)投資前景及策略咨詢研究報告
- 5.客運(yùn)值班員項(xiàng)目三運(yùn)輸生產(chǎn)管理車站基礎(chǔ)運(yùn)作34課件
- 2025屆河北省金太陽-邢襄聯(lián)盟高三上學(xué)期開學(xué)考(25-05C)-歷史試題(含答案)
- 2025年中國數(shù)顯鐘控全波段收音機(jī)數(shù)據(jù)監(jiān)測報告
- 新疆機(jī)電職業(yè)技術(shù)學(xué)院《細(xì)胞遺傳生物學(xué)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 襄陽汽車職業(yè)技術(shù)學(xué)院《大學(xué)生健康適能》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)藥工業(yè)數(shù)智化轉(zhuǎn)型實(shí)施方案(2025-2030年)
- 新疆體育職業(yè)技術(shù)學(xué)院《鐵路旅客運(yùn)輸組織》2023-2024學(xué)年第二學(xué)期期末試卷
- 海上CANTITRAVEL平臺樁基施工關(guān)鍵技術(shù)應(yīng)用v7
- 2024年4月自考08229計(jì)算機(jī)統(tǒng)計(jì)分析方法試題
- 有色金屬冶金概論課程教案
- 華為MA5800配置及調(diào)試手冊
- 【真題】2023年鎮(zhèn)江市中考化學(xué)試卷(含答案解析)
- 2023-2024年電子物證專業(yè)考試復(fù)習(xí)題庫(含答案)
- 安全生產(chǎn)培訓(xùn)課件:機(jī)器設(shè)備安全操作規(guī)程
- 針刺傷預(yù)防與措施
- 血液凈化中心信息化管理系統(tǒng)
- 【海信電器公司員工激勵機(jī)制問題和完善對策分析(附問卷)】13000字
評論
0/150
提交評論