二維數(shù)組和字符串.ppt_第1頁
二維數(shù)組和字符串.ppt_第2頁
二維數(shù)組和字符串.ppt_第3頁
二維數(shù)組和字符串.ppt_第4頁
二維數(shù)組和字符串.ppt_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

二維數(shù)組和字符串,二維數(shù)組,二維表 數(shù)表(數(shù)陣,矩陣) 1 2 3 4 5 6,1.二維數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名常量表達(dá)式常量表達(dá)式 例: int a34; 定義了一個(gè)3*4(3行4列)的數(shù)組。 注意: 不能寫成 int a3,4;的形式。 int a3,4;定義的是一維數(shù)組;數(shù)組的標(biāo)志是,每一個(gè)代表一維,C+采用這樣的定義方式,使我們可以把二維數(shù)組看作是一個(gè)特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組。(即把二維數(shù)組的每行看作一個(gè)元素) 例: int a34; 可以把a(bǔ)看成一個(gè)一維數(shù)組,它有3個(gè)元素a0、a1、a2,每個(gè)元素又是含4個(gè)元素的一維數(shù)組。見下圖。 a0 - a00,a01,a02,a03 a a1 - a10,a11,a12,a13 a2 - a20,a21,a22,a23 此時(shí), a0、a1、a2相當(dāng)于3個(gè)一維數(shù)組的名字,上面定義的二維數(shù)組可以理解為定義了3個(gè)一維數(shù)組,即相當(dāng)于 int a0 4,a1 4, a2 4; C+的這種處理方法很方便,我們?cè)诤竺鏁?huì)體會(huì)到,C+語言中,二維數(shù)組中元素在計(jì)算機(jī)內(nèi)存中的存放順序是:按行存放,即先在內(nèi)存中存放第一行的元素,再放第二行的元素(第一維變化慢,第二維變化快)。 例:int a34; 二維數(shù)組a在內(nèi)存中的存放順序?yàn)?a00,a01,a02,a03,10,a11,a12,a13,a20,a21,a22,a23,C+允許使用多維數(shù)組 有了二維數(shù)組的基礎(chǔ),再掌握多維數(shù)組是不困難的。例如,三維實(shí)數(shù)數(shù)組定義為: 數(shù)據(jù)類型 數(shù)組名常量表達(dá)式常量表達(dá)式常量表達(dá)式; double a234 定義了三位數(shù)組,共2*3*4=24個(gè)元素。多維數(shù)組在內(nèi)存中的排列順序類似于二維數(shù)組,第一維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。 a000,a001,a002,a003,a010,2 二維數(shù)組元素的引用 數(shù)組名下標(biāo)下標(biāo) 注意:每維下標(biāo)從0開始;下標(biāo)不要超過各維的大小。 例:int a34; 第1行第2列的元素是a01 (也可說成第1行的第2個(gè)元素是a01) a23是第3行的第4個(gè)元素 a33違法,3 二維數(shù)組的初始化 對(duì)于二維數(shù)組有下列初始化方法: (1)分行給二維數(shù)組賦初值,如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 這種賦值方法比較直觀,把第一對(duì)括號(hào)內(nèi)的數(shù)值賦給第一行的元素,第二括號(hào)內(nèi)的數(shù)值賦給第二行的元素,依此類推。,(2)可以將所有數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),這時(shí),計(jì)算機(jī)自動(dòng)按數(shù)組元素在內(nèi)存中的排列順序?qū)Ω髟刭x初值。 例:int a34=1,2,3,4,5,6,7,8,9,10,11,12; (3)可以只對(duì)數(shù)組中部分元素初始化。如: int a34=1,5,9; 此處的作用表示:a00元素被賦成1,a10元素被賦成5,a20元素被賦成9,而數(shù)組中的其他元素被初始化為0(與一維數(shù)組的初始化機(jī)制相同) (4)如果對(duì)二維數(shù)組的全部元素初始化,則定義數(shù)組時(shí)第一維長度可以省略,但第二維長度不能省,如:分行進(jìn)行初始化,如: int a4=0,0,3,0,10; char c10=C,p,r,o,g,r,a,m,0;,4 二維數(shù)組的賦值、輸入、輸出 使用二重循環(huán),對(duì)每個(gè)元素賦值、輸入和輸出: for(int i=0;iaij; aij*=ai j; coutaijendl; ,例題1 矩陣的行列互換 將一個(gè)二維數(shù)組的行列互換,存到另外一個(gè)二維數(shù)組中。例如: a= 1 2 3 行列互換后放在數(shù)組b中,b= 1 4 4 5 6 2 5 3 6,例題2 河圖 將19填到九宮格中,使得橫豎斜三個(gè)方向的三個(gè)數(shù)之和均為15,int main() for(int i=1;i=9;i+) for(int j=1;j=9;j+) a11=5; a00=i; a01=j; a02=15-i-j; a22=15-5-i; a12=15-a02-a22; a10=15-5-a12; a20=15-i-a10; a21=15-a20-a22; if (check() print(); return 0; ,int check() int flag10=0,0,0,0,0,0,0,0,0,0; for(int i=0;i0) ,1. 用一維數(shù)組名作函數(shù)參數(shù) 可以用數(shù)組名做函數(shù)參數(shù),此時(shí)形參與實(shí)參都是數(shù)組名(也可用指針)。 例:用選擇法對(duì)數(shù)組中的元素排序,數(shù)組名作為函數(shù)參數(shù),實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名(或指針)。實(shí)參數(shù)組與形參數(shù)組類型應(yīng)該一致,如不一致,將出錯(cuò)。 數(shù)組名代表的是數(shù)組首元素的地址(數(shù)組起始地址)。因此用數(shù)組名作函數(shù)實(shí)參時(shí),不是把實(shí)參數(shù)組元素的值傳遞給形參,而只是將實(shí)參數(shù)組的首地址傳遞給形參,這樣,實(shí)參數(shù)組和形參數(shù)組就共占同一段內(nèi)存單元。這樣,(1)聲明形參數(shù)組并不意味著真正建立一個(gè)包含若干元素的數(shù)組,在調(diào)用函數(shù)時(shí)也不對(duì)它分配存儲(chǔ)單元,只是用這樣的形式表示形參是數(shù)組,中的數(shù)值無實(shí)際作用。形參一維數(shù)組的聲明中可以寫元素個(gè)數(shù),也可以不寫,編譯系統(tǒng)對(duì)的數(shù)值不予處理。(2)需要傳遞數(shù)組的元素個(gè)數(shù)。 下面得函數(shù)首部都是等價(jià)的 void select(int arr,int n) void select(int arr5,int n) void select(int arr10,int n),2. 用多維數(shù)組名作函數(shù)參數(shù) 如果用二維數(shù)組名作為實(shí)參和形參,在對(duì)形參數(shù)組聲明是,必須制定第二維的大小,且應(yīng)該與實(shí)參的第二維的大小相同。第一維的大小可以指定,也可以不指定。 如:形參數(shù)組int a310 與 int a10,二者都合法且等價(jià); int a與int a3兩者都不合法。 在第二維大小相同的前提下,形參和實(shí)參的第一維可以不同。 如實(shí)參數(shù)組定義為 int score510;則形參可以聲明為int score310;int score10; 這時(shí)形參二維數(shù)組與實(shí)參二維數(shù)組都是由相同類型和大小的一維數(shù)組組成的,實(shí)參數(shù)組名score代表其首元素score0的起始地址。 如果是三維或更多維的數(shù)組,處理方法也是類似的。,例:有一個(gè)3*4的矩陣,求矩陣中所有元素的最大值。要求用函數(shù)求最大值。 int max(int arr4,int n) int m; m=a00; for(int i=0;in;i+) for(int j=0;j4;j+) if (marrij) m= marrij; return m; ,/由小到大 直接選擇排序 #include using namespace std; int a10001; void SelectSort(int array, int n) int i, j, k,temp; for (i = 0; i aj) /改成ain; for (i=0;iai; SelectSort(a,n); for (i=0;in;i+) coutai“ “; return 0; ,/由小到大 #include using namespace std; int a10001; void BuddleSort(int a, int n) int i, j,temp; bool flag = true; for (i = 0; ia j + 1) /改成ajaj+1就變成了由大到小排列 flag = true; temp = aj; aj = aj + 1; aj + 1 = temp; if (flag=false) break; ,int main() int n,i; cinn; for (i=0;iai; BuddleSort(a,n); for (i=0;in;i+) coutai“ “; return 0; ,字符串,C+對(duì)字符串的處理方法有兩種: 一種是用字符數(shù)組,這是繼承自C語言的方法; 另外一種是標(biāo)準(zhǔn)模板庫里的cstring類型,這是C+的標(biāo)準(zhǔn)方法。(注:NOI中可以使用cstring),字符數(shù)組,1. 字符數(shù)組的定義 用來存放字符型數(shù)據(jù)的數(shù)組為字符數(shù)組,數(shù)組中的一個(gè)元素中只能存放一個(gè)字符,整個(gè)數(shù)組可以存放一個(gè)字符串。如:char c5; 2字符數(shù)組的初始化 字符數(shù)組的初始化方式同一維數(shù)組的初始化類似,如: char c5=a,b,c,d,e; char c6 =a,b,c,d,e,0; 等價(jià)于 char c6 =a,b,c,d,e;,3 字符數(shù)組的賦值 只能對(duì)字符數(shù)組的元素賦值,而不能用賦值語句對(duì)整個(gè)數(shù)組賦值。 char a5,b5=1,2,3; a=1,2,3;/錯(cuò) a=b/錯(cuò),4字符串和字符串結(jié)束標(biāo)志 在C+語言中字符串是以0代表結(jié)束標(biāo)志。 如:“C.program”是9個(gè)字符的字符串,但在內(nèi)存中占10個(gè)字節(jié),最后一個(gè)字節(jié)存放 0。 注意:字符串要用字符數(shù)組來保存,不能用一個(gè)簡(jiǎn)單的字符變量保存,另外,字符數(shù)組的初始化方式也可寫為: char c10=“C.program”; / char c10=“C.program”; char c10=C,.,p,r,o,g,r,a,m,0 char c10=C,.,p,r,o,g,r,a,m /字符數(shù)組多留一個(gè)空間,初始化自動(dòng)填0 與char c9=C,.,p,r,o,g,r,a,m不等價(jià),5字符串的輸入、輸出: (1)用cin輸入 cin字符串或字符數(shù)組名; 例: char s20; cins; (2)用cout輸出,格式是: cout字符串或字符數(shù)組名; 例:char s20=“This is a string.”; couts; 的輸出結(jié)果為This is a string.。 也可直接輸出字符串,如:cout“This is a string” 注: 字符數(shù)組中若沒有字符串結(jié)束標(biāo)志,則一直輸出到在內(nèi)存中碰到0標(biāo)志。,6.字符串處理函數(shù) 求字符串的長度 函數(shù)原型 :strlen( const char string ); 功能:計(jì)算并返回字符串的長度。 字符串復(fù)制 函數(shù)原型 : strcpy(char destination, const char source) 功能: strcpy將字符串復(fù)制到字符串變量中,該變量中原有的內(nèi)容被覆蓋。必須保證字符串變量的這個(gè)字符數(shù)組有足夠的單元容納字符串。 函數(shù)原型 : strncpy(char destination, const char source, int numchars); 功能:strncpy,將字符串source中前numchars個(gè)字符拷貝到字符串destination中。,字符串連接 原型:strcat(char target, const char source); 功能:將字符串source接到字符串target的后面,必須保證字符串變量空間足夠。 原型:strncat(char target, const char source, int numchars); 功能:將字符串source的前numchars個(gè)字符接到字符串target的后面 字符串比較 調(diào)用格式:strcmp(字符串1,字符串2) 功能:比較兩者,返回值為0,則相等。為大與0,則字符串1大與字符串2;否則小于。,字符串輸出 調(diào)用格式:cout字符串變量 功能:輸入一個(gè)字符串。 調(diào)用格式2:cin.getline(字符串變量,變量大?。?功能:從鍵盤輸入一個(gè)以Enter鍵標(biāo)志結(jié)束的字符串。,例1 輸入n個(gè)字符串,要求找出其中的最大者。要求使用函數(shù)找最大者。(每個(gè)字符串長度小

溫馨提示

  • 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)論