版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)7(結(jié)構(gòu)體3)課件2023-2026ONEKEEPVIEWREPORTINGWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKU目錄CATALOGUE結(jié)構(gòu)體概述結(jié)構(gòu)體與指針結(jié)構(gòu)體嵌套與遞歸文件操作與結(jié)構(gòu)體案例分析:學(xué)生信息管理系統(tǒng)設(shè)計(jì)課程總結(jié)與拓展延伸結(jié)構(gòu)體概述PART01使用`struct`關(guān)鍵字定義結(jié)構(gòu)體類(lèi)型,指定結(jié)構(gòu)體名稱(chēng)和成員列表。結(jié)構(gòu)體類(lèi)型定義由多個(gè)成員組成,每個(gè)成員可以是基本數(shù)據(jù)類(lèi)型或其他結(jié)構(gòu)體類(lèi)型。成員列表結(jié)構(gòu)體的大小等于其所有成員大小之和,同時(shí)要考慮內(nèi)存對(duì)齊規(guī)則。結(jié)構(gòu)體大小結(jié)構(gòu)體定義
結(jié)構(gòu)體變量結(jié)構(gòu)體變量的聲明聲明結(jié)構(gòu)體變量時(shí)需要指定結(jié)構(gòu)體類(lèi)型名稱(chēng)。結(jié)構(gòu)體變量的初始化可以在聲明時(shí)或后續(xù)代碼中為結(jié)構(gòu)體變量的成員賦值。結(jié)構(gòu)體變量的訪問(wèn)使用`.`運(yùn)算符訪問(wèn)結(jié)構(gòu)體變量的成員。結(jié)構(gòu)體數(shù)組的初始化可以在定義時(shí)或后續(xù)代碼中為結(jié)構(gòu)體數(shù)組的每個(gè)元素賦值。結(jié)構(gòu)體數(shù)組的訪問(wèn)使用數(shù)組下標(biāo)訪問(wèn)結(jié)構(gòu)體數(shù)組中的元素,再使用`.`運(yùn)算符訪問(wèn)元素的成員。結(jié)構(gòu)體數(shù)組的定義定義結(jié)構(gòu)體數(shù)組時(shí)需要指定數(shù)組大小和結(jié)構(gòu)體類(lèi)型。結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體與指針PART02通過(guò)定義指向結(jié)構(gòu)體的指針變量,可以存儲(chǔ)結(jié)構(gòu)體變量的地址。定義指向結(jié)構(gòu)體的指針使用箭頭運(yùn)算符(->)可以通過(guò)指向結(jié)構(gòu)體的指針訪問(wèn)結(jié)構(gòu)體的成員。訪問(wèn)結(jié)構(gòu)體成員可以對(duì)指向結(jié)構(gòu)體的指針進(jìn)行加、減等運(yùn)算,以訪問(wèn)結(jié)構(gòu)體數(shù)組中的元素。指針的運(yùn)算指向結(jié)構(gòu)體的指針03提高效率使用指針傳遞結(jié)構(gòu)體可以避免整個(gè)結(jié)構(gòu)體的復(fù)制,提高程序的運(yùn)行效率。01函數(shù)參數(shù)傳遞方式可以將指向結(jié)構(gòu)體的指針作為函數(shù)的參數(shù),實(shí)現(xiàn)函數(shù)對(duì)結(jié)構(gòu)體的操作。02函數(shù)內(nèi)部對(duì)結(jié)構(gòu)體的修改在函數(shù)內(nèi)部,可以通過(guò)傳遞的指針修改結(jié)構(gòu)體的成員,實(shí)現(xiàn)對(duì)結(jié)構(gòu)體的改變。結(jié)構(gòu)體指針作為函數(shù)參數(shù)指針成員的定義可以在結(jié)構(gòu)體中定義指針類(lèi)型的成員,用于存儲(chǔ)指向其他數(shù)據(jù)類(lèi)型的指針。動(dòng)態(tài)內(nèi)存分配可以使用指針成員在結(jié)構(gòu)體中動(dòng)態(tài)分配內(nèi)存,以存儲(chǔ)可變大小的數(shù)據(jù)。指針成員的操作可以通過(guò)結(jié)構(gòu)體中的指針成員訪問(wèn)和操作所指向的數(shù)據(jù),實(shí)現(xiàn)靈活的數(shù)據(jù)處理。結(jié)構(gòu)體中指針成員的使用結(jié)構(gòu)體嵌套與遞歸PART03結(jié)構(gòu)體嵌套定義01在一個(gè)結(jié)構(gòu)體的定義中,可以包含另一個(gè)結(jié)構(gòu)體作為成員,這種包含關(guān)系稱(chēng)為結(jié)構(gòu)體嵌套。被包含的結(jié)構(gòu)體稱(chēng)為子結(jié)構(gòu)體,包含子結(jié)構(gòu)體的結(jié)構(gòu)體稱(chēng)為父結(jié)構(gòu)體。嵌套結(jié)構(gòu)體的聲明02在聲明嵌套結(jié)構(gòu)體時(shí),需要先聲明子結(jié)構(gòu)體,然后在父結(jié)構(gòu)體中聲明子結(jié)構(gòu)體的成員。嵌套結(jié)構(gòu)體的訪問(wèn)03訪問(wèn)嵌套結(jié)構(gòu)體的成員時(shí),需要使用“.”運(yùn)算符逐級(jí)訪問(wèn)。結(jié)構(gòu)體嵌套定義123一個(gè)結(jié)構(gòu)體可以包含指向自身類(lèi)型的指針或引用作為成員,這種定義方式稱(chēng)為結(jié)構(gòu)體遞歸定義。結(jié)構(gòu)體遞歸定義在聲明遞歸結(jié)構(gòu)體時(shí),需要在結(jié)構(gòu)體內(nèi)部聲明一個(gè)指向自身類(lèi)型的指針或引用成員。遞歸結(jié)構(gòu)體的聲明遞歸結(jié)構(gòu)體通常用于實(shí)現(xiàn)鏈表、樹(shù)等數(shù)據(jù)結(jié)構(gòu),可以通過(guò)指針或引用來(lái)實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)分配和訪問(wèn)。遞歸結(jié)構(gòu)體的使用結(jié)構(gòu)體遞歸定義鏈表鏈表是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體遞歸定義來(lái)實(shí)現(xiàn)。鏈表的每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)域和一個(gè)指向下一個(gè)節(jié)點(diǎn)的指針域,通過(guò)指針的鏈接可以形成一個(gè)線性的數(shù)據(jù)結(jié)構(gòu)。二叉樹(shù)二叉樹(shù)是一種樹(shù)形數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體嵌套定義來(lái)實(shí)現(xiàn)。二叉樹(shù)的每個(gè)節(jié)點(diǎn)包含一個(gè)數(shù)據(jù)域和兩個(gè)分別指向左子樹(shù)和右子樹(shù)的指針域,通過(guò)指針的鏈接可以形成一個(gè)層次分明的數(shù)據(jù)結(jié)構(gòu)。圖圖是一種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),可以使用結(jié)構(gòu)體嵌套和遞歸定義來(lái)實(shí)現(xiàn)。圖的每個(gè)節(jié)點(diǎn)可以包含一個(gè)數(shù)據(jù)域和一個(gè)指向相鄰節(jié)點(diǎn)的指針域或數(shù)組,通過(guò)指針或數(shù)組的鏈接可以形成一個(gè)網(wǎng)狀的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體嵌套與遞歸應(yīng)用舉例文件操作與結(jié)構(gòu)體PART04文件打開(kāi)與關(guān)閉使用fscanf()、fprintf()、fgets()、fputs()等函數(shù)進(jìn)行文件讀寫(xiě)操作。文件讀寫(xiě)函數(shù)文件定位使用fseek()、ftell()、rewind()等函數(shù)進(jìn)行文件定位操作。使用fopen()函數(shù)打開(kāi)文件,fclose()函數(shù)關(guān)閉文件。文件讀寫(xiě)操作回顧定義結(jié)構(gòu)體打開(kāi)文件寫(xiě)入數(shù)據(jù)關(guān)閉文件將結(jié)構(gòu)體數(shù)據(jù)寫(xiě)入文件根據(jù)需要定義結(jié)構(gòu)體類(lèi)型,包含所需的數(shù)據(jù)成員。使用fprintf()函數(shù)將結(jié)構(gòu)體數(shù)據(jù)按照格式寫(xiě)入文件。使用fopen()函數(shù)以寫(xiě)入方式打開(kāi)文件。使用fclose()函數(shù)關(guān)閉文件。使用fopen()函數(shù)以讀取方式打開(kāi)文件。打開(kāi)文件使用fscanf()函數(shù)從文件中讀取數(shù)據(jù),并按照結(jié)構(gòu)體的格式進(jìn)行解析。讀取數(shù)據(jù)將讀取的數(shù)據(jù)賦值給相應(yīng)的結(jié)構(gòu)體變量,并進(jìn)行后續(xù)處理。處理數(shù)據(jù)使用fclose()函數(shù)關(guān)閉文件。關(guān)閉文件從文件中讀取結(jié)構(gòu)體數(shù)據(jù)案例分析:學(xué)生信息管理系統(tǒng)設(shè)計(jì)PART05系統(tǒng)需求分析與設(shè)計(jì)思路系統(tǒng)需求學(xué)生信息管理系統(tǒng)需要實(shí)現(xiàn)對(duì)學(xué)生信息的錄入、查詢(xún)、修改和刪除等功能,同時(shí)要保證數(shù)據(jù)的準(zhǔn)確性和安全性。設(shè)計(jì)思路采用結(jié)構(gòu)體來(lái)存儲(chǔ)學(xué)生信息,包括學(xué)號(hào)、姓名、性別、年齡、成績(jī)等字段;使用文件操作來(lái)實(shí)現(xiàn)數(shù)據(jù)的持久化存儲(chǔ);通過(guò)菜單選擇的方式來(lái)實(shí)現(xiàn)不同功能的選擇和操作。結(jié)構(gòu)體定義structStudent{```c關(guān)鍵代碼實(shí)現(xiàn)及講解03chargender;01intid;02charname[20];關(guān)鍵代碼實(shí)現(xiàn)及講解intage;floatscore;關(guān)鍵代碼實(shí)現(xiàn)及講解};```文件操作函數(shù)關(guān)鍵代碼實(shí)現(xiàn)及講解```cvoidsave_students(structStudentstudents[],intcount){關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解if(fp==NULL){printf("Failedtoopenfile!n");return;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解}for(inti=0;i<count;i){fprintf(fp,"%d%s%c%d%.2fn",students[i].id,students[i].name,students[i].gender,students[i].age,students[i].score);}fclose(fp);關(guān)鍵代碼實(shí)現(xiàn)及講解VS}voidload_students(structStudentstudents[],int*count){關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解FILE*fp=fopen("students.txt","r");if(fp==NULL){printf("Failedtoopenfile!n");關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解return;關(guān)鍵代碼實(shí)現(xiàn)及講解010203while(!feof(fp)){structStudentstudent;}關(guān)鍵代碼實(shí)現(xiàn)及講解students[*count]=student;關(guān)鍵代碼實(shí)現(xiàn)及講解(*count);關(guān)鍵代碼實(shí)現(xiàn)及講解}fclose(fp);關(guān)鍵代碼實(shí)現(xiàn)及講解123}```主函數(shù)實(shí)現(xiàn)關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解01```c02intmain(){structStudentstudents[100];03intcount=0;intchoice;關(guān)鍵代碼實(shí)現(xiàn)及講解010203do{printf("nMenu:n");printf("1.Addstudentn");關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解01printf("2.Querystudentn");02printf("3.Modifystudentn");03printf("4.Deletestudentn");printf("5.Exitn");printf("Pleaseinputyourchoice:");關(guān)鍵代碼實(shí)現(xiàn)及講解01scanf("%d",&choice);02switch(choice){03case1://addstudent關(guān)鍵代碼實(shí)現(xiàn)及講解add_student(students,&count);關(guān)鍵代碼實(shí)現(xiàn)及講解break;case2://querystudentquery_student(students,count);關(guān)鍵代碼實(shí)現(xiàn)及講解case3://modifystudentmodify_student(students,count);break;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解break;02case4://deletestudent03delete_student(students,&count);01case5://exitprintf("Goodbye!n");break;關(guān)鍵代碼實(shí)現(xiàn)及講解關(guān)鍵代碼實(shí)現(xiàn)及講解030201break;default://invalidchoiceprintf("Invalidchoice,pleasetryagain.n");break;關(guān)鍵代碼實(shí)現(xiàn)及講解}}while(choice!=5);關(guān)鍵代碼實(shí)現(xiàn)及講解return0;關(guān)鍵代碼實(shí)現(xiàn)及講解}```關(guān)鍵代碼實(shí)現(xiàn)及講解系統(tǒng)測(cè)試與運(yùn)行結(jié)果展示添加3個(gè)學(xué)生信息,然后進(jìn)行查詢(xún)、修改和刪除操作。測(cè)試數(shù)據(jù)程序能夠正確執(zhí)行各項(xiàng)操作,并顯示相應(yīng)的結(jié)果。例如,查詢(xún)操作可以顯示指定學(xué)號(hào)的學(xué)生信息;修改操作可以修改指定學(xué)號(hào)的學(xué)生信息;刪除操作可以刪除指定學(xué)號(hào)的學(xué)生信息。運(yùn)行結(jié)果課程總結(jié)與拓展延伸PART06結(jié)構(gòu)體指針講解了結(jié)構(gòu)體指針的概念和使用方法,包括如何定義結(jié)構(gòu)體指針、如何進(jìn)行指針的初始化和賦值操作,以及如何通過(guò)指針訪問(wèn)結(jié)構(gòu)體的成員。結(jié)構(gòu)體定義與初始化介紹了如何在程序中定義結(jié)構(gòu)體類(lèi)型,以及如何進(jìn)行結(jié)構(gòu)體的初始化操作。結(jié)構(gòu)體成員訪問(wèn)詳細(xì)講解了如何訪問(wèn)結(jié)構(gòu)體的成員,包括使用點(diǎn)運(yùn)算符和箭頭運(yùn)算符進(jìn)行訪問(wèn)的方法。結(jié)構(gòu)體數(shù)組介紹了如何定義結(jié)構(gòu)體數(shù)組,以及如何進(jìn)行結(jié)構(gòu)體數(shù)組的初始化和訪問(wèn)操作。課程重點(diǎn)內(nèi)容回顧010203編寫(xiě)一個(gè)學(xué)生信息管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來(lái)表示學(xué)生信息,包括學(xué)號(hào)、姓名、性別、年齡等字段,并使用數(shù)組或鏈表來(lái)存儲(chǔ)多個(gè)學(xué)生的信息。通過(guò)編寫(xiě)函數(shù)來(lái)實(shí)現(xiàn)對(duì)學(xué)生信息的添加、刪除、修改和查詢(xún)等操作。編寫(xiě)一個(gè)圖書(shū)管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來(lái)表示圖書(shū)信息,包括書(shū)號(hào)、書(shū)名、作者、出版社等字段,并使用文件來(lái)存儲(chǔ)圖書(shū)信息。通過(guò)編寫(xiě)函數(shù)來(lái)實(shí)現(xiàn)對(duì)圖書(shū)信息的添加、刪除、修改和查詢(xún)等操作,并實(shí)現(xiàn)借書(shū)、還書(shū)等圖書(shū)借閱管理功能。編寫(xiě)一個(gè)員工工資管理系統(tǒng)建議學(xué)生使用結(jié)構(gòu)體來(lái)表示員工信息,包括員工號(hào)、姓名、基本工資、獎(jiǎng)金等字段,并使用數(shù)組或鏈表來(lái)存儲(chǔ)多個(gè)員工的信息。通過(guò)編寫(xiě)函數(shù)來(lái)實(shí)現(xiàn)對(duì)員工信息的添加、刪除、修改和查詢(xún)等操作,并實(shí)現(xiàn)工資的計(jì)算和統(tǒng)計(jì)功能。編程實(shí)踐建議與指導(dǎo)建議學(xué)生參考《C語(yǔ)言程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)與算法》等相關(guān)教材,以及網(wǎng)上豐富的C語(yǔ)言學(xué)習(xí)資源,如博客、在線課程等。建議學(xué)生按照以下步驟進(jìn)行學(xué)習(xí)和實(shí)踐推薦資源
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 32543-2026建筑施工機(jī)械與設(shè)備混凝土輸送管連接型式和安全要求
- 通風(fēng)維護(hù)工崗前操作考核試卷含答案
- 飛機(jī)儀表電氣系統(tǒng)裝調(diào)工安全文明強(qiáng)化考核試卷含答案
- 退煮漂操作工安全實(shí)操競(jìng)賽考核試卷含答案
- 制鞋工安全宣教強(qiáng)化考核試卷含答案
- 管模維修工安全培訓(xùn)競(jìng)賽考核試卷含答案
- 銀行內(nèi)部控制管理制度
- 酒店員工崗位責(zé)任與協(xié)作制度
- 酒店客房鑰匙卡掛失補(bǔ)辦制度
- 超市消防安全演練制度
- DB22∕T 3302-2021 木耳菌渣基質(zhì)水稻育苗技術(shù)規(guī)程
- 2025年6月青少年軟件編程Scratch圖形化等級(jí)考試三級(jí)真題(含答案和解析)
- 旋壓式止血帶課件
- 再生資源回收合作協(xié)議2025年模板下載
- ISO9001-2026質(zhì)量管理體系中英文版標(biāo)準(zhǔn)條款全文
- 貴州省凱里市職業(yè)能力傾向測(cè)驗(yàn)事業(yè)單位考試綜合管理類(lèi)A類(lèi)試題
- 減肥瘦身講解課件
- 工程項(xiàng)目設(shè)計(jì)施工一體化實(shí)踐操作指南
- 印刷法規(guī)題庫(kù)及答案大全
- 呼吸內(nèi)鏡介入治療匯報(bào)
- 加強(qiáng)痕跡管理辦法
評(píng)論
0/150
提交評(píng)論