第5章利用數(shù)組處理批量數(shù)據(jù)_第1頁
第5章利用數(shù)組處理批量數(shù)據(jù)_第2頁
第5章利用數(shù)組處理批量數(shù)據(jù)_第3頁
第5章利用數(shù)組處理批量數(shù)據(jù)_第4頁
第5章利用數(shù)組處理批量數(shù)據(jù)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第第5章章 利用數(shù)組處理批量數(shù)據(jù)利用數(shù)組處理批量數(shù)據(jù)5.1 為什么需要數(shù)組為什么需要數(shù)組5.2 定義和引用一維數(shù)組定義和引用一維數(shù)組5.3 定義和引用二維數(shù)組定義和引用二維數(shù)組5.4 用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù)5.5 字符數(shù)組字符數(shù)組*5.6 C+處理字符串的方法處理字符串的方法 字符串類與字符串變量字符串類與字符串變量 25.1 為什么需要數(shù)組為什么需要數(shù)組概括地說概括地說: 數(shù)組是有序數(shù)據(jù)的集合數(shù)組是有序數(shù)據(jù)的集合 要尋找要尋找一個數(shù)組中的某一個元素必須給出兩個要一個數(shù)組中的某一個元素必須給出兩個要素素,即數(shù)組名和下標(biāo)即數(shù)組名和下標(biāo) 數(shù)組名和下標(biāo)惟一數(shù)組名和下標(biāo)惟一地標(biāo)識一個數(shù)

2、組中的一個元素地標(biāo)識一個數(shù)組中的一個元素 數(shù)組是數(shù)組是有類型屬性的有類型屬性的 同一數(shù)組中的每一個同一數(shù)組中的每一個元素都必須屬于同一數(shù)據(jù)類型元素都必須屬于同一數(shù)據(jù)類型 一個數(shù)組一個數(shù)組在內(nèi)存中占一片連續(xù)的存儲單元在內(nèi)存中占一片連續(xù)的存儲單元 如果有如果有一個一個short型數(shù)組型數(shù)組a,假設(shè)數(shù)組的起始地址假設(shè)數(shù)組的起始地址為為2000,則該數(shù)組在內(nèi)存中的存儲情況如則該數(shù)組在內(nèi)存中的存儲情況如圖所示圖所示 3引入數(shù)組就不需要在程序中定義大量的變量引入數(shù)組就不需要在程序中定義大量的變量,大大大大減少程序中變量的數(shù)量減少程序中變量的數(shù)量,使程序精煉使程序精煉,而且數(shù)組含義清而且數(shù)組含義清楚楚,使用

3、方便使用方便,明確地反映了數(shù)據(jù)間的聯(lián)系明確地反映了數(shù)據(jù)間的聯(lián)系 許多好的許多好的算算法都與數(shù)組有關(guān)法都與數(shù)組有關(guān) 熟練地利用數(shù)組熟練地利用數(shù)組,可以大大地提高編程和解題的效率可以大大地提高編程和解題的效率,加強(qiáng)了程序的可讀性加強(qiáng)了程序的可讀性 C+用方括號來表示下標(biāo)用方括號來表示下標(biāo),如用如用s1,s2,s3 分別代分別代表數(shù)組中的三個元素表數(shù)組中的三個元素 45.2 定義和引用一維數(shù)組定義和引用一維數(shù)組5.2.1 定義一維數(shù)組定義一維數(shù)組 格式為:格式為:類型標(biāo)識符類型標(biāo)識符 數(shù)組名數(shù)組名 常量表達(dá)式常量表達(dá)式; 例如:例如: int a10;int a10;它表示數(shù)組名為它表示數(shù)組名為a,

4、a,此數(shù)組為整型此數(shù)組為整型, ,有有1010個元素個元素 說明說明: :(1)(1)數(shù)組名定名規(guī)則和變量名相同數(shù)組名定名規(guī)則和變量名相同, ,遵循標(biāo)識符定名規(guī)則遵循標(biāo)識符定名規(guī)則 (2)(2)用方括號括起來的常量表達(dá)式表示下標(biāo)值用方括號括起來的常量表達(dá)式表示下標(biāo)值, ,如下面的如下面的寫法是合法的寫法是合法的: : int a10;int a10; int a2int a2* *55 int anint an* *2;/2;/假設(shè)前面已定義了假設(shè)前面已定義了n n為常變?yōu)槌W兞苛?5(3) 常量表達(dá)式的值表示元素的個數(shù)常量表達(dá)式的值表示元素的個數(shù),即數(shù)組長度即數(shù)組長度 例如例如,在在“int

5、 a10;”中中,10表示表示a數(shù)組有數(shù)組有10個元素個元素, 下標(biāo)從下標(biāo)從0開始開始 注意最后一個元素是注意最后一個元素是a9而不是而不是a10 (4) 常量表達(dá)式中可以包括常量常量表達(dá)式中可以包括常量 常變量和符號常量常變量和符號常量,但不但不能包含變量能包含變量 也就是說也就是說,C+不允許對數(shù)組的大小作動不允許對數(shù)組的大小作動態(tài)定義態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行過程中變量的即數(shù)組的大小不依賴于程序運(yùn)行過程中變量的值值 例如例如,下面這樣定義數(shù)組是不行的下面這樣定義數(shù)組是不行的: int n; cinn; /輸入輸入a數(shù)組的長度數(shù)組的長度 int an; /企圖根據(jù)企圖根據(jù)n的值決

6、定數(shù)組的長度的值決定數(shù)組的長度 改為下面一行就合法了改為下面一行就合法了 const int n=5;65.2.2 引用一維數(shù)組的元素引用一維數(shù)組的元素?cái)?shù)組必須先定義數(shù)組必須先定義,然后使用然后使用 只能逐個引用數(shù)組元素的值只能逐個引用數(shù)組元素的值而不能一次引用整個數(shù)組中的全部元素的值而不能一次引用整個數(shù)組中的全部元素的值 數(shù)組元素的表示形式為數(shù)組元素的表示形式為 數(shù)組名數(shù)組名下標(biāo)下標(biāo)下標(biāo)可以是整型常量或整型表達(dá)式下標(biāo)可以是整型常量或整型表達(dá)式 a0= a5+ a7- a2*37例例5.1 數(shù)組元素的引用數(shù)組元素的引用 /省略頭部兩行省略頭部兩行int main( ) int i, a10;

7、for (i=0;i=0;i-) coutai ; coutendl; return 0;運(yùn)行結(jié)果如下運(yùn)行結(jié)果如下: 9 8 7 6 5 4 3 2 1 0(使(使a0a9的值為的值為09,然后按逆序輸出)然后按逆序輸出)85.2.3 一維數(shù)組的初始化一維數(shù)組的初始化 (1) 在定義數(shù)組時(shí)分別對數(shù)組元素賦予初值在定義數(shù)組時(shí)分別對數(shù)組元素賦予初值 例如例如 int a10=0,1,2,3,4,5,6,7,8,9;(2) 可以只給一部分元素賦值可以只給一部分元素賦值 例如例如 int a10=0,1,2,3,4;(3) 如果想使一個數(shù)組中全部元素值為如果想使一個數(shù)組中全部元素值為1,可以寫成可以寫

8、成 int a10=1,1,1,1,1,1,1,1,1,1; 不能寫成不能寫成 int a10=1*10;/ 不能給數(shù)組整體賦初值不能給數(shù)組整體賦初值(4) 在對全部數(shù)組元素賦初值時(shí)在對全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長度可以不指定數(shù)組長度 例如例如: int a5=1,2,3,4,5; 可以寫成可以寫成 int a=1,2,3,4,5;95.2.4 一維數(shù)組程序舉例一維數(shù)組程序舉例例例5.2 用數(shù)組來處理求用數(shù)組來處理求Fibonacci數(shù)列問題數(shù)列問題 可以用可以用20個元素代表數(shù)列中的個元素代表數(shù)列中的20個數(shù)個數(shù),從第從第3個數(shù)開始個數(shù)開始 fi=fi-2+fi-1 10#incl

9、ude #include using namespace std;int main( ) int i; int f20=1,1; /f0=1,f1=1 for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) /此循環(huán)的作用是輸出此循環(huán)的作用是輸出20個數(shù)個數(shù) if(i%5=0) coutendl;/控制換行控制換行,每行輸出每行輸出5個數(shù)據(jù)個數(shù)據(jù) coutsetw(8)fi;/每個數(shù)據(jù)輸出時(shí)占每個數(shù)據(jù)輸出時(shí)占8列寬度列寬度 coutendl; /最后執(zhí)行一次換行最后執(zhí)行一次換行 return 0;運(yùn)行結(jié)果如下運(yùn)行結(jié)果如下:(空一行空一行) 1 1 2 3 5

10、 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 11例例5.3 編寫程序編寫程序,用用起泡法起泡法對對10個數(shù)排序個數(shù)排序(按由小到大順序按由小到大順序) 思路是思路是:將相鄰兩個數(shù)比較將相鄰兩個數(shù)比較,將小的調(diào)到前頭將小的調(diào)到前頭 第一輪的實(shí)現(xiàn)過程:第一輪的實(shí)現(xiàn)過程:12結(jié)論:結(jié)論:如果有如果有n個數(shù)個數(shù),則要進(jìn)行則要進(jìn)行n-1輪比較輪比較(和交換和交換) 在第在第1輪輪中要進(jìn)行中要進(jìn)行n-1次兩兩比較次兩兩比較,在第在第j輪中要進(jìn)行輪中要進(jìn)行n-j次兩兩比較次兩兩比較 根據(jù)以上思路寫出程序根據(jù)以上思路寫出程序,今設(shè)今設(shè)n=

11、10,本例定義數(shù)組長度為本例定義數(shù)組長度為11(a0不用不用,只用只用a1a10,以符合人們的習(xí)慣)以符合人們的習(xí)慣)然后進(jìn)行第然后進(jìn)行第2輪比較輪比較,對余下的前面對余下的前面5個數(shù)按上法個數(shù)按上法進(jìn)行比較進(jìn)行比較,如下圖如下圖13#include using namespace std;int main( ) int a11; int i,j,t; coutinput 10 numbers :endl; for (i=1;iai; coutendl; 14for (j=1;j=9;j+) /共進(jìn)行共進(jìn)行9輪比較輪比較 for(i=1;iai+1 ) /如果前面的數(shù)大于后面的數(shù)如果前面的數(shù)大

12、于后面的數(shù) t=ai;ai=ai+1;ai+1=t; /交換兩個數(shù)的位置交換兩個數(shù)的位置coutthe sorted numbers :endl;for(i=1;i11;i+) /輸出輸出10個數(shù)個數(shù) coutai ; coutendl; return 0;運(yùn)行結(jié)果如下運(yùn)行結(jié)果如下:input 10 numbers:3 5 9 11 33 6 -9 -76 100 123 the sorted numbers:-76 -9 3 5 6 9 11 33 100 123155.3 二維數(shù)組的定義和引用二維數(shù)組的定義和引用具有兩個下標(biāo)的數(shù)組稱為二維數(shù)組具有兩個下標(biāo)的數(shù)組稱為二維數(shù)組 有些數(shù)據(jù)要依賴于

13、有些數(shù)據(jù)要依賴于兩個因素才能惟一地確定兩個因素才能惟一地確定,例如有例如有3個學(xué)生個學(xué)生,每個學(xué)生有每個學(xué)生有4門課的成績門課的成績,顯然顯然,成績數(shù)據(jù)是一個二維表。成績數(shù)據(jù)是一個二維表。想表示想表示第第3個學(xué)生第個學(xué)生第4門課門課的成績的成績,就需要指出學(xué)生的序就需要指出學(xué)生的序號和課程的序號兩個因素號和課程的序號兩個因素,在數(shù)學(xué)上以在數(shù)學(xué)上以S3,4表示表示 在在C+中以中以s34表示表示 165.3.1 定義二維數(shù)組定義二維數(shù)組定義二維數(shù)組的一般形式為定義二維數(shù)組的一般形式為: 類型標(biāo)識符類型標(biāo)識符 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式常量表達(dá)式常量表達(dá)式例如例如 float a34, b5

14、10;17C+中中,二維數(shù)組中元素排列的順序是二維數(shù)組中元素排列的順序是:按行存放按行存放,即在內(nèi)存中先順序存放第一行的元素即在內(nèi)存中先順序存放第一行的元素,再存放第再存放第二行的元素二行的元素 下圖表示了對下圖表示了對a34數(shù)組存放的順序數(shù)組存放的順序 185.3.2 二維數(shù)組的引用二維數(shù)組的引用二維數(shù)組的元素的表示形式為:二維數(shù)組的元素的表示形式為: 數(shù)組名數(shù)組名 下標(biāo)下標(biāo)下標(biāo)下標(biāo)如如a23 下標(biāo)可以是整型表達(dá)式下標(biāo)可以是整型表達(dá)式,如如a2-12*2-1 不要寫成不要寫成 a2,3,a2-1,2*2-1數(shù)組元素是左值數(shù)組元素是左值,可以出現(xiàn)在表達(dá)式中可以出現(xiàn)在表達(dá)式中,也可以被賦值也可以

15、被賦值.例如例如: b12=a23/2;19在使用數(shù)組元素時(shí)在使用數(shù)組元素時(shí),應(yīng)該注意下標(biāo)值應(yīng)在已定義的應(yīng)該注意下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)數(shù)組大小的范圍內(nèi) 常出現(xiàn)的錯誤是常出現(xiàn)的錯誤是 int a34; /定義定義3行行4列的數(shù)組列的數(shù)組 a34=15; /引用引用a34元素元素請嚴(yán)格區(qū)分請嚴(yán)格區(qū)分在定義數(shù)組時(shí)用的在定義數(shù)組時(shí)用的a34和引用元素時(shí)的和引用元素時(shí)的a34的區(qū)別的區(qū)別 a34用來定義數(shù)組的維數(shù)用來定義數(shù)組的維數(shù)和各維的大小和各維的大小a34中的中的3和和4是下標(biāo)是下標(biāo)值值,a34代表某一個元素代表某一個元素 205.3.3 二維數(shù)組的初始化二維數(shù)組的初始化(1)分行給二維

16、數(shù)組賦初值)分行給二維數(shù)組賦初值 這種賦初值方法比較直觀這種賦初值方法比較直觀 int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2)可以將所有數(shù)據(jù)寫在一個花括號內(nèi))可以將所有數(shù)據(jù)寫在一個花括號內(nèi),按數(shù)組排列的按數(shù)組排列的順序?qū)Ω髟刭x初值順序?qū)Ω髟刭x初值 int a34=1,2,3,4,5,6,7,8,9,10,11,12; 效果與前法相同效果與前法相同 如果數(shù)據(jù)多如果數(shù)據(jù)多,寫成一大片寫成一大片,容易遺漏容易遺漏,也不易檢查也不易檢查 21(3) 可以對部分元素賦初值可以對部分元素賦初值 如:如: int a34=1,5,9;它的作用是只對各行第它的作用是只對各行

17、第1列的元素賦初值列的元素賦初值,其余元素值自其余元素值自動置為動置為0 也可以對各行中的某一元素賦初值也可以對各行中的某一元素賦初值: int a34=1,0,6,0,0,11; 這種方法對非這種方法對非0元素少時(shí)比較方便元素少時(shí)比較方便,不必將所有的不必將所有的0都寫出都寫出來來,只需輸入少量數(shù)據(jù)只需輸入少量數(shù)據(jù) int a34=1,5,6; / 第第3行不賦初值行不賦初值 int a34=1,0,9; /第第2行不賦初值行不賦初值 1 0 0 05 0 0 09 0 0 0 1 0 0 00 6 0 00 0 11 01 0 0 05 6 0 00 0 0 01 0 0 00 0 0 0

18、0 0 0 922(4) 如果對全部元素都賦初值如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)即提供全部初始數(shù)據(jù)),則定義數(shù)組時(shí)對第一維的長度可以不指定則定義數(shù)組時(shí)對第一維的長度可以不指定,但第二但第二維的長度不能省維的長度不能省 如如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 可以寫成可以寫成 : int a4=1,2,3,4,5,6,7,8,9,10,11,12;可以只對部分元素賦初值而省略第一維的長度可以只對部分元素賦初值而省略第一維的長度,但應(yīng)分行賦但應(yīng)分行賦初值初值 如如: int a4=0,0,3,0,0,10;能通知編譯系統(tǒng)能通知編譯系統(tǒng): 數(shù)組共有數(shù)

19、組共有3行行 數(shù)組各元素為數(shù)組各元素為 0 0 3 00 0 0 00 10 0 023 C+在定義數(shù)組和表示數(shù)組元素時(shí)采用在定義數(shù)組和表示數(shù)組元素時(shí)采用a這這種兩個方括號的方式種兩個方括號的方式,對數(shù)組初始化時(shí)十分有對數(shù)組初始化時(shí)十分有用用,它使概念清楚它使概念清楚,使用方便使用方便,不易出錯不易出錯 24例例5.4 將一個二維數(shù)組行和列元素互換將一個二維數(shù)組行和列元素互換,存到另存到另一個二維數(shù)組中一個二維數(shù)組中 例如例如 a= 行列互換后存放到行列互換后存放到b中中 b=1 2 3 4 5 61 42 53 625#include using namespace std;int main

20、( ) int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for (i=0;i=1;i+) for (j=0;j=2;j+) coutaij ; bji=aij; coutendl; 運(yùn)行結(jié)果如下運(yùn)行結(jié)果如下: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6 coutarray b:endl; for (i=0;i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0;265.4 用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù)常量和變量可以用作函數(shù)實(shí)參常量和變量可以用

21、作函數(shù)實(shí)參,同樣數(shù)組元素也可同樣數(shù)組元素也可以作函數(shù)實(shí)參以作函數(shù)實(shí)參,其用法與變量相同其用法與變量相同 數(shù)組名也可以數(shù)組名也可以作實(shí)參和形參作實(shí)參和形參,傳遞的是數(shù)組的起始地址傳遞的是數(shù)組的起始地址 1. 用數(shù)組元素作函數(shù)實(shí)參用數(shù)組元素作函數(shù)實(shí)參(很少使用,不做要求)很少使用,不做要求)由于實(shí)參可以是表達(dá)式由于實(shí)參可以是表達(dá)式,而數(shù)組元素可以是表達(dá)式而數(shù)組元素可以是表達(dá)式的組成部分的組成部分,因此數(shù)組元素當(dāng)然可以作為函數(shù)的實(shí)因此數(shù)組元素當(dāng)然可以作為函數(shù)的實(shí)參參,與用變量作實(shí)參一樣與用變量作實(shí)參一樣,將數(shù)組元素的值傳送給將數(shù)組元素的值傳送給形參變量形參變量 272. 用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作

22、函數(shù)參數(shù)可以用數(shù)組名作函數(shù)參數(shù)可以用數(shù)組名作函數(shù)參數(shù),此時(shí)實(shí)參與形參都用數(shù)組名。此時(shí)實(shí)參與形參都用數(shù)組名。例例5.7 用起泡法對數(shù)組中用起泡法對數(shù)組中10個整數(shù)按由小到大排序個整數(shù)按由小到大排序 將排序設(shè)計(jì)為一個自定義函數(shù)將排序設(shè)計(jì)為一個自定義函數(shù)sort。28#include using namespace std;int main( ) void sort(int array,int n); /函數(shù)聲明函數(shù)聲明 int a10,i; coutenter the originl array:endl; for(i=0;iai; coutendl; sort(a,10);/函數(shù)調(diào)用函數(shù)調(diào)用,數(shù)

23、組名作實(shí)參數(shù)組名作實(shí)參 coutthe sorted array:endl; for(i=0;i10;i+) coutai ; coutendl; return 0;29void sort(int array, int n) /形參形參array是數(shù)組名是數(shù)組名 int i,j,t; for (j=0;j9;j+) /共進(jìn)行共進(jìn)行9趟比較趟比較 for(i=0;iarrayi+1) /如果前面的數(shù)大于后面的數(shù)如果前面的數(shù)大于后面的數(shù) t=arrayi; arrayi=arrayi+1; arrayi+1=t; /交換兩個數(shù)的位置交換兩個數(shù)的位置 運(yùn)行結(jié)果如下運(yùn)行結(jié)果如下: enter the

24、originl array:6 9 -2 56 87 11 -54 3 0 77 the sorted array:-54 -2 0 3 6 9 11 56 77 8730兩點(diǎn)說明兩點(diǎn)說明:(1)如果函數(shù)實(shí)參是數(shù)組名如果函數(shù)實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名形參也應(yīng)為數(shù)組名,形參不能形參不能聲明為普通變量聲明為普通變量(如如int array) 實(shí)參數(shù)組與形參數(shù)組實(shí)參數(shù)組與形參數(shù)組類型應(yīng)一致類型應(yīng)一致(現(xiàn)都為現(xiàn)都為int型型),如不一致如不一致,結(jié)果將出錯結(jié)果將出錯 (2) 需要特別說明的是需要特別說明的是: 數(shù)組名代表數(shù)組首元素的地址數(shù)組名代表數(shù)組首元素的地址,并不代并不代表數(shù)組中的全部元素表數(shù)

25、組中的全部元素 因此用數(shù)組名作函數(shù)實(shí)參時(shí)因此用數(shù)組名作函數(shù)實(shí)參時(shí),不是把實(shí)不是把實(shí)參參數(shù)組的值傳遞給形參數(shù)組的值傳遞給形參,而只是將實(shí)參數(shù)組首元素的地址傳遞給而只是將實(shí)參數(shù)組首元素的地址傳遞給形參形參 形參數(shù)組形參數(shù)組實(shí)參數(shù)組實(shí)參數(shù)組31在在用變量作函數(shù)參數(shù)用變量作函數(shù)參數(shù)時(shí)時(shí),只能將實(shí)參變量的值傳給形參只能將實(shí)參變量的值傳給形參變量變量,在調(diào)用函數(shù)過程中如果改變了形參的值在調(diào)用函數(shù)過程中如果改變了形參的值,對實(shí)參沒有影對實(shí)參沒有影響響,即實(shí)參的值不因形參的值改變而改變即實(shí)參的值不因形參的值改變而改變 而而用數(shù)組名作函數(shù)實(shí)參時(shí)用數(shù)組名作函數(shù)實(shí)參時(shí),改變形參數(shù)組元素的值將同時(shí)改改變形參數(shù)組元素的

26、值將同時(shí)改變實(shí)參數(shù)組元素的值變實(shí)參數(shù)組元素的值 在程序設(shè)計(jì)中往往有意識地利用這在程序設(shè)計(jì)中往往有意識地利用這一一特點(diǎn)改變實(shí)參數(shù)組元素的值特點(diǎn)改變實(shí)參數(shù)組元素的值 32實(shí)際上實(shí)際上,聲明形參數(shù)組并不意味著真正建立一個包含若聲明形參數(shù)組并不意味著真正建立一個包含若干元素的數(shù)組干元素的數(shù)組,在調(diào)用函數(shù)時(shí)也不對它分配存儲單元在調(diào)用函數(shù)時(shí)也不對它分配存儲單元,只只是用是用array這樣的形式表示這樣的形式表示array是一維數(shù)組名是一維數(shù)組名,以接收實(shí)參以接收實(shí)參傳來的地址傳來的地址 因此因此array中方括號內(nèi)的數(shù)值并無實(shí)際作用中方括號內(nèi)的數(shù)值并無實(shí)際作用,編譯系統(tǒng)對一維編譯系統(tǒng)對一維數(shù)組方括號內(nèi)的內(nèi)

27、容不予處理數(shù)組方括號內(nèi)的內(nèi)容不予處理 形參一維數(shù)組的聲明中可以寫元素個數(shù)形參一維數(shù)組的聲明中可以寫元素個數(shù),也可以不寫也可以不寫 函數(shù)首部的下面幾種寫法都合法函數(shù)首部的下面幾種寫法都合法,作用相同作用相同 void sort( int array10 ,int n) void sort( int array ,int n) void sort( int array5 ,int n) 335.5 字符數(shù)組字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的字符數(shù)組中的一個元素存放一個字符一個元素存放一個字符 字符數(shù)組具有數(shù)組的共同屬性字符數(shù)組具有數(shù)組的共同屬性

28、由于字符串應(yīng)用廣泛由于字符串應(yīng)用廣泛, C+專門為它提供了許多方專門為它提供了許多方便的用法和函數(shù)便的用法和函數(shù) 345.5.1 字符數(shù)組的定義和初始化字符數(shù)組的定義和初始化例如例如: char c10;c0=I;c1= ; c2=a;c3=m;c4= ;c5=h;c6=a;c7=p;c8=p; c9=y;35char c10=I, ,a,m, ,h,a,p,p,y;把把10個字符分別賦給個字符分別賦給c0c9這這10個元素個元素 如果花括號中如果花括號中提供的初值個數(shù)大于數(shù)組長度提供的初值個數(shù)大于數(shù)組長度,則按語法錯誤則按語法錯誤處理處理 如果如果初值個數(shù)小于數(shù)組長度初值個數(shù)小于數(shù)組長度,則

29、只將這些字符賦給數(shù)組中前則只將這些字符賦給數(shù)組中前面那些元素面那些元素,其余的元素自動定為空字符其余的元素自動定為空字符 如果提供的如果提供的初值個數(shù)與預(yù)定的數(shù)組長度相同初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時(shí)可以在定義時(shí)可以省略數(shù)組長度省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度 如如:char c=I, ,a,m, ,h,a,p,p,y;365.5.2 字符數(shù)組的賦值與引用字符數(shù)組的賦值與引用只能對字符數(shù)組的元素賦值只能對字符數(shù)組的元素賦值,而不能用賦值語句對整個而不能用賦值語句對整個數(shù)組賦值數(shù)組賦值 如如char c5;c=C, h, i, n, a

30、; /錯誤錯誤,不能對整個數(shù)組一次賦值不能對整個數(shù)組一次賦值c0=C; c1=h;c2=i;c3=n;c4=a; /對數(shù)組元素賦值對數(shù)組元素賦值,正確正確如果已定義了如果已定義了a和和b是具有相同類型和長度的數(shù)組是具有相同類型和長度的數(shù)組,且且b數(shù)組數(shù)組已被初始化已被初始化,請分析請分析: a=b; a0=b0; 錯誤錯誤,不能對整個數(shù)組整體賦值不能對整個數(shù)組整體賦值 正確正確,引用數(shù)組元素引用數(shù)組元素37例:輸出一個字符數(shù)組例:輸出一個字符數(shù)組#include using namespace std;int main( ) char c= C, h, i, n, a ; int i; for

31、 (i=0;i5;i+) coutci; coutendl; return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:China385.5.3 字符串和字符串結(jié)束標(biāo)志字符串和字符串結(jié)束標(biāo)志 用一個字符數(shù)組可以存放一個字符串中的字符用一個字符數(shù)組可以存放一個字符串中的字符 如如 char str12 = I, ,a,m, ,h,a,p,p,y;系統(tǒng)對字符數(shù)組最后兩元素自動填補(bǔ)空字符系統(tǒng)對字符數(shù)組最后兩元素自動填補(bǔ)空字符 0 為了測定字符串的實(shí)際長度為了測定字符串的實(shí)際長度,C+規(guī)定了一個規(guī)定了一個“字符串的結(jié)字符串的結(jié)束標(biāo)志束標(biāo)志”-字符字符 0 在上面的數(shù)組中在上面的數(shù)組中,第第11個字符為個字符為 0,就表明

32、字符串的有效字就表明字符串的有效字符為其前面的符為其前面的10個字符個字符 結(jié)論:結(jié)論:遇到字符遇到字符 0就表示字符串到此結(jié)束就表示字符串到此結(jié)束,由它前面的字由它前面的字符組成字符串符組成字符串 39對一個字符串常量對一個字符串常量,系統(tǒng)會自動在所有字符的后面加一系統(tǒng)會自動在所有字符的后面加一個個 0作為結(jié)束符作為結(jié)束符 例如字符串例如字符串I am happy共有共有10個字符個字符,但在內(nèi)存中它但在內(nèi)存中它 共占共占11個字節(jié)個字節(jié),最后一個字節(jié)最后一個字節(jié) 0是由系統(tǒng)自動加上的是由系統(tǒng)自動加上的 在程序中往往依靠檢測在程序中往往依靠檢測 0的位置來判定字符串是否結(jié)束的位置來判定字符串

33、是否結(jié)束,而不而不是根據(jù)數(shù)組的長度來決定字符串長度是根據(jù)數(shù)組的長度來決定字符串長度 在定義字符數(shù)組時(shí)應(yīng)估計(jì)實(shí)際字符串長度在定義字符數(shù)組時(shí)應(yīng)估計(jì)實(shí)際字符串長度,保證數(shù)組長度始終保證數(shù)組長度始終大于字符串實(shí)際長度大于字符串實(shí)際長度 如果在一個字符數(shù)組中先后存放多個不同長度的字符串如果在一個字符數(shù)組中先后存放多個不同長度的字符串,則則應(yīng)應(yīng)使數(shù)組長度大于最長的字符串的長度使數(shù)組長度大于最長的字符串的長度 40注意注意: 0 只是一個供辨別的標(biāo)志只是一個供辨別的標(biāo)志 思考:思考:coutc; for (i=0;i10;i+) coutci; coutendl; return 0; for (i=0; c

34、i!= 0;i+) coutstr; /用字符數(shù)組名輸入字符串用字符數(shù)組名輸入字符串 coutstr; /用字符數(shù)組名輸出字符串用字符數(shù)組名輸出字符串在運(yùn)行時(shí)輸入一個字符串在運(yùn)行時(shí)輸入一個字符串,如:如:China 輸出時(shí)輸出時(shí),逐個輸出字符直到遇結(jié)束符逐個輸出字符直到遇結(jié)束符0, 輸出結(jié)果為:輸出結(jié)果為:Chinastr數(shù)組的狀態(tài):數(shù)組的狀態(tài):字符數(shù)組名字符數(shù)組名str代表字符數(shù)組第一個元素的地址代表字符數(shù)組第一個元素的地址,執(zhí)行執(zhí)行“coutstr;”的過程是從的過程是從str所指向的數(shù)組第一個元素開始所指向的數(shù)組第一個元素開始逐個輸出字符逐個輸出字符,直到遇到直到遇到0為止為止 45請注意請注意:(1) 輸出的字符不包括結(jié)束符輸出的字符不包括結(jié)束符0 (2) 輸出字符串時(shí)輸出字符串時(shí),cout流中用字符數(shù)組名流中用字符數(shù)組名,而不是數(shù)組元素名而不是數(shù)組元素名 coutstr ; coutstr

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論