北大青鳥 C語言實(shí)現(xiàn) 11_第1頁
北大青鳥 C語言實(shí)現(xiàn) 11_第2頁
北大青鳥 C語言實(shí)現(xiàn) 11_第3頁
北大青鳥 C語言實(shí)現(xiàn) 11_第4頁
北大青鳥 C語言實(shí)現(xiàn) 11_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、復(fù)雜數(shù)據(jù)類型及排序第十一章回顧上一節(jié)課主要講解了以下內(nèi)容:字符串變量和常量字符串指針執(zhí)行字符串的輸入/輸出操作各種字符串函數(shù)如何將數(shù)組作為參數(shù)傳遞給函數(shù)如何將字符串用作函數(shù)參數(shù)2目標(biāo) 2-1解釋結(jié)構(gòu)體及它們的使用定義結(jié)構(gòu)體聲明結(jié)構(gòu)體變量解釋如何訪問結(jié)構(gòu)體元素解釋如何初始化結(jié)構(gòu)體解釋結(jié)構(gòu)體中使用的賦值語句解釋如何將結(jié)構(gòu)體作為參數(shù)傳遞給函數(shù)使用結(jié)構(gòu)體數(shù)組解釋結(jié)構(gòu)體數(shù)組的初始化3目標(biāo) 2- 2解釋結(jié)構(gòu)體指針解釋如何將結(jié)構(gòu)體指針作為參數(shù)傳遞給函數(shù)解釋 typedef 關(guān)鍵字解釋如何使用插入排序法和冒泡排序法對(duì)數(shù)組進(jìn)行排序4結(jié)構(gòu)體結(jié)構(gòu)體由許多組織在一起的數(shù)據(jù)項(xiàng)組成,這些數(shù)據(jù)項(xiàng)不需要屬于同一類型結(jié)構(gòu)體可以

2、容納需要的任意多數(shù)據(jù)項(xiàng)1變量ILLUSION數(shù)組ILLUSIONBACH1作者版次5定義結(jié)構(gòu)體結(jié)構(gòu)體定義形成了創(chuàng)建結(jié)構(gòu)體變量的模板結(jié)構(gòu)體中的變量稱為結(jié)構(gòu)體元素或結(jié)構(gòu)體成員示例:struct catchar bk_name 25;char author 20;int edn;float price; ; 6聲明結(jié)構(gòu)體變量一旦定義了結(jié)構(gòu)體,就可以聲明一個(gè)或多個(gè)該類型的變量示例:struct cat books1;這條語句將會(huì)預(yù)留足夠的內(nèi)存來存放該結(jié)構(gòu)體中的所有項(xiàng)struct cat char bk_name25; char author20;int edn;float price; books1,

3、 books2;其他方法 struct cat books1, books2;或struct cat books1;struct cat books2; 7訪問結(jié)構(gòu)體元素結(jié)構(gòu)體元素通過使用點(diǎn)運(yùn)算符(.)來引用,這個(gè)運(yùn)算符也稱為成員運(yùn)算符語法:structure_name.element_name其中 structure_name 為結(jié)構(gòu)體名稱, element_name為元素名稱。示例:scanf(%s, books1.bk_name);8初始化結(jié)構(gòu)體與變量和數(shù)組一樣,結(jié)構(gòu)體變量也可以在聲明時(shí)初始化 struct employee int no; char name 20; employee

4、類型的變量 emp1 和 emp2 可以按照下面的方式進(jìn)行聲明和初始化: struct employee emp1 = 346, Abraham; struct employee emp2 = 347, John;9結(jié)構(gòu)體中使用的賦值語句2- 1可以使用一條簡(jiǎn)單的賦值語句將一個(gè)結(jié)構(gòu)體變量的值賦給另一個(gè)相同類型的結(jié)構(gòu)體變量例如,如果 books1 和 books2 是同一類型的結(jié)構(gòu)體變量,那么下列語句是有效的:books2 = books1;10結(jié)構(gòu)體的賦值語句2- 2在不能進(jìn)行直接賦值的情況下,可以使用內(nèi)置函數(shù) memcpy()語法:memcpy (char * destn, char &so

5、urce, int nbytes);示例:memcpy (&books2, &books1, sizeof(struct cat);11結(jié)構(gòu)體內(nèi)的結(jié)構(gòu)體可以將一個(gè)結(jié)構(gòu)體放入另一個(gè)結(jié)構(gòu)體內(nèi)。結(jié)構(gòu)體不能嵌套它自身 struct issue char borrower 20; char dt_of_issue8; struct cat books; issl; 訪問結(jié)構(gòu)體元素的格式與訪問正常的結(jié)構(gòu)體類似, issl.borrower要訪問結(jié)構(gòu)體 cat 的元素,而cat 是另一個(gè)結(jié)構(gòu)體 issue 的一部分,應(yīng)使用下列語句 issl.books.author 12將結(jié)構(gòu)體作為參數(shù)進(jìn)行傳遞結(jié)構(gòu)體變量可

6、以作為參數(shù)傳遞給函數(shù)使用這種方式可以將一組邏輯上相關(guān)的數(shù)據(jù)項(xiàng)一起傳遞,而不是逐個(gè)傳遞變量的類型應(yīng)該與參數(shù)的類型相匹配13結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體的一種常見用法是采用結(jié)構(gòu)體數(shù)組的形式首先定義結(jié)構(gòu)體,然后聲明該類型的數(shù)據(jù)變量示例:struct cat books50;訪問數(shù)組 books 的第五個(gè)元素中的變量 author:books4.author14結(jié)構(gòu)體數(shù)組的初始化結(jié)構(gòu)體數(shù)組是通過用一對(duì)大括號(hào)將其元素值列表括起來進(jìn)行初始化的示例:struct unit char ch;int i; struct unit series 3 = a, 100 b, 200 c, 30015結(jié)構(gòu)體指針結(jié)構(gòu)體指針是通過在

7、結(jié)構(gòu)體變量名前放置一個(gè)星號(hào)(*)來進(jìn)行聲明的- 運(yùn)算符用于通過指針來訪問結(jié)構(gòu)體的元素示例:struct cat *ptr_bk;ptr_bk = &books;printf(%s, ptr_bk-author);將結(jié)構(gòu)體作為參數(shù)傳遞給函數(shù)使得該函數(shù)可以直接修改結(jié)構(gòu)體元素16typedef 關(guān)鍵字可以使用 typedef 關(guān)鍵字來定義新的數(shù)據(jù)類型名它并沒有新建數(shù)據(jù)類型,而只是為已有的類型定義新的名字語法: typedef type name;示例:typedef float deci;typedef 不能用于存儲(chǔ)類17數(shù)組排序排序需要將數(shù)組中的數(shù)據(jù)按照指定的順序(如升序或者降序)進(jìn)行排列有兩種方

8、式來對(duì)數(shù)組進(jìn)行排序:插入排序法和冒泡排序法在插入排序法中,檢查數(shù)組中的每個(gè)元素,將它插入排序的元素中的適當(dāng)位置在冒泡排序法中,從最底部的元素開始進(jìn)行比較,較小的元素會(huì)向上冒18冒泡排序法3- 1將最少的數(shù)排在最上面,就像冒泡一樣19冒泡排序法3 - 2#include void main()int i, j, temp, arr_num5 = 23, 90, 9, 25, 16;clrscr();for(i=3;i=0;i-) /* Tracks every pass */for(j=4;j=4-i;j-) /* Compares elements */if(arr_numjarr_numj-

9、1)temp=arr_numj;交換數(shù)arr_numj=arr_numj-1; arr_numj-1=temp; 待續(xù)需要排序的數(shù)組20冒泡排序法 3- 3printf(nThe sorted array);for(i=0;iy; x-)arrnumx=arrnumx-1; /*Insert the number*/arrnumx=temp; 定義函數(shù)實(shí)現(xiàn)將arrnumx的值插入到索引y處23插入排序法 4-3#includevoid main()int i, j, arr5 = 23, 90, 9, 25, 16 ;char flag;clrscr(); /*Loop to compare each element of the unsorted part of the array*/for(i=1; i5; i+)需要排序的數(shù)組24插入排序法4 -4 /*Loop for each element in the sorted part of the array*/for(j=0, flag=n; jarri)/*Invoke the function to insert the number*/insertnum(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論