




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第4章,數(shù)字組,c語(yǔ)言編程,2020/7/5,2,第4章,數(shù)組,本章摘要:4.1一維數(shù)組4.2二維數(shù)組4.3字符數(shù)組和字符串4.4指針和數(shù)組4.5指針指向指針,2020/7/5,3,第4章數(shù)組,如何存儲(chǔ)一個(gè)人在N門(mén)課中的分?jǐn)?shù)如何存儲(chǔ)和處理一堂課中N門(mén)課的分?jǐn)?shù)?這些數(shù)據(jù)具有相同的數(shù)據(jù)類(lèi)型。為了方便地使用這些數(shù)據(jù),C語(yǔ)言提供了一種構(gòu)造數(shù)據(jù)類(lèi)型:數(shù)組。示例:用于存儲(chǔ)學(xué)生分?jǐn)?shù)的實(shí)數(shù)組scoe5,其中:score是數(shù)組名稱(chēng)。該數(shù)組可以存儲(chǔ)五個(gè)分?jǐn)?shù),由下標(biāo)變量表示:分?jǐn)?shù)0、分?jǐn)?shù)1和分?jǐn)?shù)4。下標(biāo)變量也稱(chēng)為數(shù)組元素。2020/7/5,4,4.1一維數(shù)組,例如:int a10浮動(dòng)計(jì)分5;“數(shù)據(jù)類(lèi)型”:數(shù)組元
2、素的數(shù)據(jù)類(lèi)型?!皵?shù)組名”:遵循C語(yǔ)言標(biāo)識(shí)符規(guī)則?!俺A勘磉_(dá)式”:指示數(shù)組中有多少元素,即數(shù)組的長(zhǎng)度。它可以是整數(shù)常量、整數(shù)變量、整數(shù)表達(dá)式或返回值為整數(shù)的函數(shù)調(diào)用。指示元素的數(shù)量。4.1.1一維數(shù)組的定義,數(shù)據(jù)類(lèi)型數(shù)組名整數(shù)常量表達(dá)式;2020/7/5,5,下列數(shù)組定義是正確的:#定義N 10浮點(diǎn)score1N,score2Nint num 10N;充電器c26,以下數(shù)組定義不正確:int數(shù)組(10);數(shù)組名后面應(yīng)該有一個(gè)正方形的擴(kuò)展名,而不是一個(gè)圓括號(hào)。浮動(dòng)記分卡;平方擴(kuò)展必須是整數(shù)常數(shù),而不是整數(shù)變量。char字符串;數(shù)組名稱(chēng)后的方形擴(kuò)展名不能為空。4.1.1一維數(shù)組的定義(續(xù)),2020
3、/7/5,6,數(shù)組在內(nèi)存中的存儲(chǔ),數(shù)組下標(biāo)從0開(kāi)始。一維數(shù)組的數(shù)組元素按順序存儲(chǔ)在內(nèi)存中。數(shù)組名表示數(shù)組的第一個(gè)地址,即score的值與score0的地址值相同。分?jǐn)?shù)數(shù)組,引用2020/7/5,7,4.1.2數(shù)組的元素,格式:例如,輸入學(xué)生分?jǐn)?shù)為(I=0;i5;I)掃描f(%f,例如:fibn=fibn-1 fibn-2;下標(biāo)表達(dá)式的值必須是整數(shù)表達(dá)式。數(shù)組名下標(biāo)表達(dá)式,2020/7/5,8,4.1.2數(shù)組元素引用(續(xù)),描述:下標(biāo)從0開(kāi)始(下限為0),數(shù)組的最大下標(biāo)(上限)為數(shù)組長(zhǎng)度減1。示例:int a10。Scanf (%d,/*下標(biāo)越界*/,C編譯系統(tǒng)不檢查越界,如果引用的數(shù)組元素超出
4、數(shù)組范圍,它將破壞其他變量的值。2020/7/5,9,4.1.2數(shù)組元素的引用(續(xù)),是下標(biāo)運(yùn)算符。引用數(shù)組元素時(shí),根據(jù)數(shù)組的第一個(gè)地址和下標(biāo)號(hào)計(jì)算元素的實(shí)際地址,并取出地址的內(nèi)容進(jìn)行運(yùn)算。例如,參考score2: (1)計(jì)算2000 2*4=2008 (2)取出2008的內(nèi)容,并在2020年7月5日、10日和4月1.3日初始化數(shù)組。初始化:定義數(shù)組時(shí)給數(shù)組元素賦值。1定義數(shù)組時(shí),為所有數(shù)組元素指定初始值,例如:int a5=0,1,2,3,4;2.省略數(shù)組長(zhǎng)度,例如:int a=0,1,2,3,4;3定義數(shù)組時(shí),給一些數(shù)組元素賦值,例如:int a5=1,2,3;其余的元素被賦值為0。4當(dāng)原
5、始值的數(shù)量大于數(shù)組元素的數(shù)量時(shí),會(huì)出現(xiàn)編譯錯(cuò)誤,例如:int a5=0,1,2,3,4,5;2020/7/5,11,4.1.4一維數(shù)組應(yīng)用示例(教科書(shū)),第124頁(yè),2020/7/5,12,4.1.4一維數(shù)組應(yīng)用示例,示例4.1將10個(gè)人的結(jié)果輸入計(jì)算機(jī),并以相反的順序顯示。#定義N 10 main()int I;浮動(dòng)記分卡;對(duì)于(I=0;I=0;i - ) printf(%6.1f,score I);操作情況如下:67 74 89 92 34 67 83 95 73 78 78.0 73.0 95.0 83.0 67.0 34.0 92.0 89.0 74.0 67.0,2020/7/5,1
6、3,例4.2氣泡分選(從小到大)。以6個(gè)數(shù)字為例:3,7,5,6,8和0。第一次排序如下:3 7 5 6 8 0第一次3和7比較,3 7 5 6 8 0第二次7和5比較,3 5 7 6 8 0第三次7和6比較,3 5 6 7 8 0第四次7和8比較,3 5 6 7 8 0第五次8和0比較,3 5 6 7 0 8第一次排序。,2020/7/5/14,按冒泡法排序(續(xù)),第二個(gè)排序如下:3 5 6 7 0 8第一個(gè)3和5個(gè)比較,3 5 6 7 0 8第二個(gè)5和6個(gè)比較,3 5 6 7 0 8第三個(gè)6和7個(gè)比較,3 5 6 7 0 8第四個(gè)7和0個(gè)比較,以及第二個(gè)排序中的3 5 6 0 7 8個(gè)排序
7、,依此類(lèi)推:第三次比較3次, 在6 7 8的第四遍中比較2次,在5 6 7 8的第五遍中比較1次,最后在3 5 6 7 8的第三遍中留下1個(gè)數(shù)字0,因此不需要再次比較。 排序結(jié)果如下:0.35678,2020/7/5,15,氣泡排序(續(xù))。上述數(shù)組元素的排序是通過(guò)雙循環(huán)實(shí)現(xiàn)的。外循環(huán)重復(fù)N-1次,內(nèi)循環(huán)重復(fù)N-1、N-2次,依次1次。每次要比較的兩個(gè)元素,第一個(gè)元素與由aj標(biāo)識(shí)的內(nèi)部循環(huán)j相關(guān),第二個(gè)元素與由aj 1標(biāo)識(shí)的內(nèi)部循環(huán)j相關(guān)。I的值是1,2,依次為N-1,對(duì)于每個(gè)I,j的值為0,1,反過(guò)來(lái)。2020/7/5/16,鼓泡法分選(續(xù))。從上面的過(guò)程中,我們可以看到N個(gè)數(shù)字應(yīng)該進(jìn)行N-1
8、次比較,在第I次比較中,N-1次應(yīng)該成對(duì)比較。2020/7/5,17,#定義N6 main()int An;I,j,t;對(duì)于(I=0;iaj 1)t=aj;aj=aj 1;aj 1=t;打印(排序后的數(shù)字:n);/輸出語(yǔ)句,程序運(yùn)行如下:3 7 5 6 8 0 3 5 6 7 8,2020/7 5,18,例4.3按選擇方法排序(從小到大)。選擇方法的排序原則:一次選擇數(shù)組中的每個(gè)數(shù)字,記下當(dāng)前位置,假設(shè)它是當(dāng)前位置的最小數(shù)字(min=i ),從下一個(gè)數(shù)字掃描到最后一個(gè)數(shù)字,并記錄最小數(shù)字的位置(min)。如果掃描后min不等于I,則意味著假設(shè)是錯(cuò)誤的,然后交換min和I上的數(shù)字位置。也就是說(shuō),
9、10個(gè)數(shù)字中的最小數(shù)字首先與a0交換,然后a1到a9中的最小數(shù)字與a1交換。在第一輪比較中,找出未排序數(shù)字中最小的一個(gè)??偣矐?yīng)該比較9輪。2020/7/5/19,以6個(gè)數(shù)字為例:3、7、5、6、8和0。思路:第一遍:依次比較第一個(gè)數(shù)字和下面的數(shù)字。如果后一個(gè)數(shù)字小于第一個(gè)數(shù)字,則交換兩個(gè)數(shù)字。比較后,第一個(gè)數(shù)字是最小的數(shù)字。第二遍:依次比較第二個(gè)數(shù)字和下面的數(shù)字。如果后一個(gè)數(shù)字小于第二個(gè)數(shù)字,則交換兩個(gè)數(shù)字。比較后,第二個(gè)數(shù)字是下一個(gè)最小的數(shù)字。等等。例4.3按選擇方法排序(從小到大)。2020/7/5/20,按選擇方法排序(續(xù)),上述數(shù)組元素的排序通過(guò)雙循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)置為1,內(nèi)循環(huán)變
10、量設(shè)置為J.外循環(huán)重復(fù)N-1次,內(nèi)循環(huán)重復(fù)N-1、N-2次,依次1次。每次比較兩個(gè)元素,第一個(gè)元素與外環(huán)1相關(guān),由ai標(biāo)識(shí),第二個(gè)元素與內(nèi)環(huán)J相關(guān),由aj標(biāo)識(shí)。I的值是0,1,反過(guò)來(lái),對(duì)于每個(gè)I,J的值是i 1,i 2,依次5。2020/7/5/21,按選擇方法排序(續(xù)),2020/7/5/22,# define n6 main()int an;I,j,t;對(duì)于(I=0;iaj)t=ai;ai=ajaj=t。打印(排序后的數(shù)字:n);程序運(yùn)行如下:20 96 78 65 86 40排序數(shù): 20 40 65 78 86 96,2020/7/5,23,4.2二維數(shù)組,數(shù)據(jù)類(lèi)型數(shù)組名常量表達(dá)式1常
11、量表達(dá)式2;例如:float x23,4.2.1二維數(shù)組的定義,int a3,4,b(3,4),c,d(3)(4);2020/7/5,24,地址值數(shù)組元素,二維數(shù)組元素按存儲(chǔ)順序:2020/7/5,25,x0為數(shù)組名,x00為數(shù)組地址,x1為數(shù)組名,x10為數(shù)組地址,二維數(shù)組可視為特殊的一維數(shù)組,x0 -浮動(dòng)x23,2020/7/5,26,a34=3;/*下標(biāo)越界*/a1,2=1;/*應(yīng)寫(xiě)成a12=1;*/,4 . 2 . 2 2D數(shù)組元素的引用,例如:int a34a00=3;a01=a00 10,數(shù)組名稱(chēng)行下標(biāo)表達(dá)式列下標(biāo)表達(dá)式,數(shù)組元素表達(dá)式:2020/7/5,27,4.2.3二維數(shù)組的
12、初始化,例如:int a23=1,2,3,4,5,6;1。根據(jù)線條指定初始值,例如:int a23=1,2,3,4,5,6;初始化后的結(jié)果:1 2 3 4 5 6,2根據(jù)內(nèi)存中數(shù)組元素的排列順序給每個(gè)元素賦值,3給一些元素賦值,例如:int a23=1,4;初始化后的結(jié)果:1 0 0 4 0 0,2020/7/5,28,4.2.3二維數(shù)組初始化(續(xù))。初始化4個(gè)數(shù)組時(shí),可以保存行長(zhǎng)度,但不能保存列長(zhǎng)度。例如,int a3=1,2,3,4,5,6,7;int b4=1,4,5;初始化結(jié)果:結(jié)果: A 0: 123 A 1: 456 A 2: 700,結(jié)果B 0: 1000 B 1: 4500,2
13、020/7/5,29。以下二維數(shù)組的定義都是錯(cuò)誤的:4.2.3二維數(shù)組的初始化,int a,b 2,C3;int m24=1,2,3,4,5,6,7,8,9;/*編譯錯(cuò)誤,初始值的個(gè)數(shù)大于數(shù)組元素的個(gè)數(shù)*/,2020/7/5,30,4.2.4二維數(shù)組應(yīng)用示例(教材),P 130,2020/7/5,31,4.2.4二維數(shù)組應(yīng)用示例,示例4.4為四行三列數(shù)組main() int a43,I,j,k;對(duì)于(I=0;i4;I)對(duì)于(j=0;J3;j)掃描(d),程序運(yùn)行如下:1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 9 10 11 12,2020/7/5,32,
14、4.2.4二維數(shù)組應(yīng)用示例(續(xù)),示例4.5有一個(gè)NM矩陣,通過(guò)編程計(jì)算出絕對(duì)值最大的元素。圖4.4查找最大元素,2020/7/5,33,# include math . h # define n 4 # define M5 main()int I,j,row,column,max,anm/*輸入數(shù)據(jù)*/max=ABS(a00);row=column=0;對(duì)于(I=0;imax) max=abs(共同執(zhí)行活動(dòng));row=I;col=j;/*輸出數(shù)據(jù)*/,程序運(yùn)行如下:34 56 12 67 23 12 67 43 98 54 65 45 66 16 24 37 83 25 64 19 max=
15、98,row=1,column=3,2020/7/5,34,4.3字符數(shù)組和字符串,字符數(shù)組:可以存儲(chǔ)多個(gè)字符。4.3.1基本概念,字符串:字符串末尾必須有0個(gè)字符,并且其ASCII碼值為0。不是字符串,而是字符串,2020/7/5,35,另一個(gè)例子:char a35數(shù)組是二維字符數(shù)組,可以存儲(chǔ)15個(gè)字符或3個(gè)長(zhǎng)度不大于4的字符串。4.3.2字符數(shù)組的定義,例如:字符s10s數(shù)組是一個(gè)一維字符數(shù)組,可以容納10個(gè)字符或長(zhǎng)度不大于9的字符串。注意:字符串只能存儲(chǔ)在字符數(shù)組中。2020/7/5,36,4.3.3字符數(shù)組的初始化,1使用字符常量來(lái)分配初始值,例如:char c5=C,h,I,n,a;另一個(gè)例子:char c6=C,h,I,n,a,0;是字符串,而不是字符串。2020年7月5日,37,4.3.3字符數(shù)組初始化(續(xù)),例如:char a310=basic,pascal,c;2,用字符串常量賦值初始值,例如:char str10=字符串;或char str10=字符串;是一根繩子嗎?2020/7/5,38,4.3.3字符數(shù)組的初始化(續(xù)),例如:char s37=s,t,r,I,n,g;3初始化過(guò)程中省略了長(zhǎng)度,例如:char s1=早上好!s10,s113,例如:char s2=s,t,r,I,n,g;思考:哪個(gè)數(shù)組存儲(chǔ)字符串?2020/7/5,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)供應(yīng)合同范本
- 企業(yè)修路合同范本
- 2025年衡水駕駛員貨運(yùn)從業(yè)資格證模擬考試題
- 中介交易服務(wù)合同范本
- 會(huì)展項(xiàng)目服務(wù)合同范例
- 2025年昆明道路貨運(yùn)從業(yè)資格證模擬考試官方題下載
- 修車(chē)配件合同范本
- 出租合同范本版
- 農(nóng)村水源地租賃合同范本
- 與演員合作合同范本
- 三年級(jí)體育下冊(cè)全冊(cè)教案
- 2024年八年級(jí)語(yǔ)文下冊(cè)《經(jīng)典常談》第一章《說(shuō)文解字》練習(xí)題卷附答案
- (研究生)商業(yè)倫理與會(huì)計(jì)職業(yè)道德ppt教學(xué)課件(完整版)
- 山西省煤炭運(yùn)銷(xiāo)集團(tuán)有限公司王家?guī)X煤礦井筒工程施工組織設(shè)計(jì)
- 三年級(jí)數(shù)學(xué)下冊(cè)單元計(jì)劃【9個(gè)單元全】
- 鋼筋工程隱蔽檢查驗(yàn)收記錄填寫(xiě)實(shí)例
- 火力發(fā)電廠水汽化學(xué)監(jiān)督導(dǎo)則
- 二年級(jí)科學(xué)上冊(cè)期末考試質(zhì)量分析
- 相聲《治病》
- 行動(dòng)學(xué)習(xí)-組織能力提升新境界培訓(xùn)課件.ppt
- QTD01鋼質(zhì)無(wú)縫氣瓶檢驗(yàn)工藝指導(dǎo)書(shū)課件
評(píng)論
0/150
提交評(píng)論