已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
二維數(shù)組和字符串,二維數(shù)組,二維表 數(shù)表(數(shù)陣,矩陣) 1 2 3 4 5 6,1.二維數(shù)組的定義: 數(shù)據(jù)類型 數(shù)組名常量表達(dá)式常量表達(dá)式 例: int a34; 定義了一個3*4(3行4列)的數(shù)組。 注意: 不能寫成 int a3,4;的形式。 int a3,4;定義的是一維數(shù)組;數(shù)組的標(biāo)志是,每一個代表一維,C+采用這樣的定義方式,使我們可以把二維數(shù)組看作是一個特殊的一維數(shù)組:它的元素又是一個一維數(shù)組。(即把二維數(shù)組的每行看作一個元素) 例: int a34; 可以把a(bǔ)看成一個一維數(shù)組,它有3個元素a0、a1、a2,每個元素又是含4個元素的一維數(shù)組。見下圖。 a0 - a00,a01,a02,a03 a a1 - a10,a11,a12,a13 a2 - a20,a21,a22,a23 此時, a0、a1、a2相當(dāng)于3個一維數(shù)組的名字,上面定義的二維數(shù)組可以理解為定義了3個一維數(shù)組,即相當(dāng)于 int a0 4,a1 4, a2 4; C+的這種處理方法很方便,我們在后面會體會到,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個元素。多維數(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個元素是a01) a23是第3行的第4個元素 a33違法,3 二維數(shù)組的初始化 對于二維數(shù)組有下列初始化方法: (1)分行給二維數(shù)組賦初值,如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 這種賦值方法比較直觀,把第一對括號內(nèi)的數(shù)值賦給第一行的元素,第二括號內(nèi)的數(shù)值賦給第二行的元素,依此類推。,(2)可以將所有數(shù)據(jù)寫在一個花括號內(nèi),這時,計(jì)算機(jī)自動按數(shù)組元素在內(nèi)存中的排列順序?qū)Ω髟刭x初值。 例:int a34=1,2,3,4,5,6,7,8,9,10,11,12; (3)可以只對數(shù)組中部分元素初始化。如: int a34=1,5,9; 此處的作用表示:a00元素被賦成1,a10元素被賦成5,a20元素被賦成9,而數(shù)組中的其他元素被初始化為0(與一維數(shù)組的初始化機(jī)制相同) (4)如果對二維數(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),對每個元素賦值、輸入和輸出: for(int i=0;iaij; aij*=ai j; coutaijendl; ,例題1 矩陣的行列互換 將一個二維數(shù)組的行列互換,存到另外一個二維數(shù)組中。例如: a= 1 2 3 行列互換后放在數(shù)組b中,b= 1 4 4 5 6 2 5 3 6,例題2 河圖 將19填到九宮格中,使得橫豎斜三個方向的三個數(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ù)組中的元素排序,數(shù)組名作為函數(shù)參數(shù),實(shí)參是數(shù)組名,形參也應(yīng)為數(shù)組名(或指針)。實(shí)參數(shù)組與形參數(shù)組類型應(yīng)該一致,如不一致,將出錯。 數(shù)組名代表的是數(shù)組首元素的地址(數(shù)組起始地址)。因此用數(shù)組名作函數(shù)實(shí)參時,不是把實(shí)參數(shù)組元素的值傳遞給形參,而只是將實(shí)參數(shù)組的首地址傳遞給形參,這樣,實(shí)參數(shù)組和形參數(shù)組就共占同一段內(nèi)存單元。這樣,(1)聲明形參數(shù)組并不意味著真正建立一個包含若干元素的數(shù)組,在調(diào)用函數(shù)時也不對它分配存儲單元,只是用這樣的形式表示形參是數(shù)組,中的數(shù)值無實(shí)際作用。形參一維數(shù)組的聲明中可以寫元素個數(shù),也可以不寫,編譯系統(tǒng)對的數(shù)值不予處理。(2)需要傳遞數(shù)組的元素個數(shù)。 下面得函數(shù)首部都是等價的 void select(int arr,int n) void select(int arr5,int n) void select(int arr10,int n),2. 用多維數(shù)組名作函數(shù)參數(shù) 如果用二維數(shù)組名作為實(shí)參和形參,在對形參數(shù)組聲明是,必須制定第二維的大小,且應(yīng)該與實(shí)參的第二維的大小相同。第一維的大小可以指定,也可以不指定。 如:形參數(shù)組int a310 與 int a10,二者都合法且等價; int a與int a3兩者都不合法。 在第二維大小相同的前提下,形參和實(shí)參的第一維可以不同。 如實(shí)參數(shù)組定義為 int score510;則形參可以聲明為int score310;int score10; 這時形參二維數(shù)組與實(shí)參二維數(shù)組都是由相同類型和大小的一維數(shù)組組成的,實(shí)參數(shù)組名score代表其首元素score0的起始地址。 如果是三維或更多維的數(shù)組,處理方法也是類似的。,例:有一個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+對字符串的處理方法有兩種: 一種是用字符數(shù)組,這是繼承自C語言的方法; 另外一種是標(biāo)準(zhǔn)模板庫里的cstring類型,這是C+的標(biāo)準(zhǔn)方法。(注:NOI中可以使用cstring),字符數(shù)組,1. 字符數(shù)組的定義 用來存放字符型數(shù)據(jù)的數(shù)組為字符數(shù)組,數(shù)組中的一個元素中只能存放一個字符,整個數(shù)組可以存放一個字符串。如:char c5; 2字符數(shù)組的初始化 字符數(shù)組的初始化方式同一維數(shù)組的初始化類似,如: char c5=a,b,c,d,e; char c6 =a,b,c,d,e,0; 等價于 char c6 =a,b,c,d,e;,3 字符數(shù)組的賦值 只能對字符數(shù)組的元素賦值,而不能用賦值語句對整個數(shù)組賦值。 char a5,b5=1,2,3; a=1,2,3;/錯 a=b/錯,4字符串和字符串結(jié)束標(biāo)志 在C+語言中字符串是以0代表結(jié)束標(biāo)志。 如:“C.program”是9個字符的字符串,但在內(nèi)存中占10個字節(jié),最后一個字節(jié)存放 0。 注意:字符串要用字符數(shù)組來保存,不能用一個簡單的字符變量保存,另外,字符數(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ù)組多留一個空間,初始化自動填0 與char c9=C,.,p,r,o,g,r,a,m不等價,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)容被覆蓋。必須保證字符串變量的這個字符數(shù)組有足夠的單元容納字符串。 函數(shù)原型 : strncpy(char destination, const char source, int numchars); 功能:strncpy,將字符串source中前numchars個字符拷貝到字符串destination中。,字符串連接 原型:strcat(char target, const char source); 功能:將字符串source接到字符串target的后面,必須保證字符串變量空間足夠。 原型:strncat(char target, const char source, int numchars); 功能:將字符串source的前numchars個字符接到字符串target的后面 字符串比較 調(diào)用格式:strcmp(字符串1,字符串2) 功能:比較兩者,返回值為0,則相等。為大與0,則字符串1大與字符串2;否則小于。,字符串輸出 調(diào)用格式:cout字符串變量 功能:輸入一個字符串。 調(diào)用格式2:cin.getline(字符串變量,變量大?。?功能:從鍵盤輸入一個以Enter鍵標(biāo)志結(jié)束的字符串。,例1 輸入n個字符串,要求找出其中的最大者。要求使用函數(shù)找最大者。(每個字符串長度小
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職美發(fā)與形象設(shè)計(jì)(發(fā)型修剪技術(shù))試題及答案
- 2025年中職裝配式建筑工程技術(shù)(建筑常識基礎(chǔ))試題及答案
- 2025-2026年高三地理(同步復(fù)習(xí))下學(xué)期期中檢測卷
- 2025年高職航空導(dǎo)航技術(shù)(航空導(dǎo)航基礎(chǔ))試題及答案
- 2025年高職(中藥學(xué))中藥炮制工藝階段測試題及評分標(biāo)準(zhǔn)
- 2025年大學(xué)藥物分析(藥物分析基礎(chǔ))試題及答案
- 第2部分 第10章 第3講 服務(wù)業(yè)區(qū)位因素及其變化
- 2025年工作總結(jié)報告年終匯報及2026新年計(jì)劃
- 深度解析(2026)GBT 18310.6-2001纖維光學(xué)互連器件和無源器件 基本試驗(yàn)和測量程序 第2-6部分試驗(yàn) 鎖緊機(jī)構(gòu)抗拉強(qiáng)度
- 深度解析(2026)《GBT 18114.1-2010稀土精礦化學(xué)分析方法 第1部分:稀土氧化物總量的測定 重量法》
- 光刻和刻蝕工藝
- 優(yōu)質(zhì)課-中國的農(nóng)業(yè)
- 德國格屋集團(tuán)提升推拉和推拉窗五金系統(tǒng)介紹
- YY/T 0640-2008無源外科植入物通用要求
- GB/T 12668.4-2006調(diào)速電氣傳動系統(tǒng)第4部分:一般要求交流電壓1000V以上但不超過35kV的交流調(diào)速電氣傳動系統(tǒng)額定值的規(guī)定
- FZ/T 52052-2018低熔點(diǎn)聚酯(LMPET)/再生聚酯(RPET)復(fù)合短纖維
- CB/T 466-1995法蘭鑄鋼閘閥
- 形象禮儀教材課件
- (更新版)中國移動政企行業(yè)認(rèn)證題庫大全-下(判斷題匯總)
- 項(xiàng)目部級安全教育考試題及答案
- 獨(dú)柱墩鋼蓋梁安裝施工要點(diǎn)
評論
0/150
提交評論