二維數(shù)組和字符串課件_第1頁(yè)
二維數(shù)組和字符串課件_第2頁(yè)
二維數(shù)組和字符串課件_第3頁(yè)
二維數(shù)組和字符串課件_第4頁(yè)
二維數(shù)組和字符串課件_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(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ù)陣,矩陣)

123456學(xué)號(hào)語(yǔ)文數(shù)學(xué)外語(yǔ)110010010021101101201.二維數(shù)組的定義:

數(shù)據(jù)類型數(shù)組名[常量表達(dá)式][常量表達(dá)式]

例:inta[3][4];

定義了一個(gè)3*4(3行4列)的數(shù)組。注意:不能寫成inta[3,4];的形式。inta[3,4];定義的是一維數(shù)組;數(shù)組的標(biāo)志是[],每一個(gè)[]代表一維[0][0][0][1][0][2][0][3][1][0][1][1][1][2][1][3][2][0][2][1][2][2][2][3]C++語(yǔ)言中,二維數(shù)組中元素在計(jì)算機(jī)內(nèi)存中的存放順序是:按行存放,即先在內(nèi)存中存放第一行的元素,再放第二行的元素(第一維變化慢,第二維變化快)。例:inta[3][4];二維數(shù)組a在內(nèi)存中的存放順序?yàn)閍[0][0],a[0][1],a[0][2],a[0][3],[1][0],a[1][1],a[1][2],a[1][3],a[2][0],a[2][1],a[2][2],a[2][3]C++允許使用多維數(shù)組

有了二維數(shù)組的基礎(chǔ),再掌握多維數(shù)組是不困難的。例如,三維實(shí)數(shù)數(shù)組定義為:數(shù)據(jù)類型數(shù)組名[常量表達(dá)式][常量表達(dá)式][常量表達(dá)式];

doublea[2][3][4]

定義了三位數(shù)組,共2*3*4=24個(gè)元素。多維數(shù)組在內(nèi)存中的排列順序類似于二維數(shù)組,第一維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。

a[0][0][0],a[0][0][1],a[0][0][2],a[0][0][3],a[0][1][0],…

2二維數(shù)組元素的引用數(shù)組名[下標(biāo)][下標(biāo)]注意:每維下標(biāo)從0開始;下標(biāo)不要超過各維的大小。例:inta[3][4];

第1行第2列的元素是a[0][1]

(也可說成第1行的第2個(gè)元素是a[0][1])

a[2][3]是第3行的第4個(gè)元素

a[3][3]違法(2)可以將所有數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),這時(shí),計(jì)算機(jī)自動(dòng)按數(shù)組元素在內(nèi)存中的排列順序?qū)Ω髟刭x初值。例:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(3)可以只對(duì)數(shù)組中部分元素初始化。如:

inta[3][4]={{1},{5},{9}};此處的作用表示:a[0][0]元素被賦成1,a[1][0]元素被賦成5,a[2][0]元素被賦成9,而數(shù)組中的其他元素被初始化為0(與一維數(shù)組的初始化機(jī)制相同)(4)如果對(duì)二維數(shù)組的全部元素初始化,則定義數(shù)組時(shí)第一維長(zhǎng)度可以省略,但第二維長(zhǎng)度不能省,如:分行進(jìn)行初始化,如:

inta[][4]={{0,0,3},{},{0,10}}; charc[10]={‘C’,’p’,’r’,’o’,’g’,’r’,’a’,’m’,’\0’};4二維數(shù)組的賦值、輸入、輸出

使用二重循環(huán),對(duì)每個(gè)元素賦值、輸入和輸出:

for(inti=0;i<3;i++)for(intj=0;j<4;j++)//初始化有錯(cuò)誤嗎?

{cin>>a[i][j];a[i][j]*=a[i][j];cout<<a[i][j]<<endl;}例題1矩陣的行列互換將一個(gè)二維數(shù)組的行列互換,存到另外一個(gè)二維數(shù)組中。例如:

a=123行列互換后放在數(shù)組b中,b=144562536intmain(){for(inti=1;i<=9;i++)for(intj=1;j<=9;j++){

a[1][1]=5; a[0][0]=i; a[0][1]=j; a[0][2]=15-i-j; a[2][2]=15-5-i; a[1][2]=15-a[0][2]-a[2][2]; a[1][0]=15-5-a[1][2]; a[2][0]=15-i-a[1][0]; a[2][1]=15-a[2][0]-a[2][2];

if(check()) { print(); return0; }}}5intcheck(){ intflag[10]={0,0,0,0,0,0,0,0,0,0};

for(inti=0;i<3;i++) for(intj=0;j<3;j++) { if((a[i][j]>0)&&!flag[a[i][j]]) flag[a[i][j]]=1; else return0; } return1;}1.用一維數(shù)組名作函數(shù)參數(shù)可以用數(shù)組名做函數(shù)參數(shù),此時(shí)形參與實(shí)參都是數(shù)組名(也可用指針)。例:用選擇法對(duì)數(shù)組中的元素排序2.用多維數(shù)組名作函數(shù)參數(shù)如果用二維數(shù)組名作為實(shí)參和形參,在對(duì)形參數(shù)組聲明是,必須制定第二維的大小,且應(yīng)該與實(shí)參的第二維的大小相同。第一維的大小可以指定,也可以不指定。如:形參數(shù)組inta[3][10]與inta[][10],二者都合法且等價(jià);

inta[][]與inta[3][]兩者都不合法。

在第二維大小相同的前提下,形參和實(shí)參的第一維可以不同。如實(shí)參數(shù)組定義為intscore[5][10];則形參可以聲明為intscore[3][10];intscore[][10];

這時(shí)形參二維數(shù)組與實(shí)參二維數(shù)組都是由相同類型和大小的一維數(shù)組組成的,實(shí)參數(shù)組名score代表其首元素score[0]的起始地址。如果是三維或更多維的數(shù)組,處理方法也是類似的。例:有一個(gè)3*4的矩陣,求矩陣中所有元素的最大值。要求用函數(shù)求最大值。intmax(intarr[][4],intn){intm;m=a[0][0];for(inti=0;i<n;i++)for(intj=0;j<4;j++)if(m<arr[i][j])m=m<arr[i][j];returnm;}//由小到大直接選擇排序#include<iostream>usingnamespacestd;inta[10001];voidSelectSort(intarray[],intn){inti,j,k,temp;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j])//改成a[i]<a[j]就變成由大到小排序了

{temp=a[i];a[i]=a[j];a[j]=temp;}}intmain(){intn,i;cin>>n;for(i=0;i<n;i++)cin>>a[i];SelectSort(a,n);for(i=0;i<n;i++)cout<<a[i]<<"";return0;}intmain(){intn,i;cin>>n;for(i=0;i<n;i++)cin>>a[i];BuddleSort(a,n);for(i=0;i<n;i++)cout<<a[i]<<"";return0;}字符串C++對(duì)字符串的處理方法有兩種:一種是用字符數(shù)組,這是繼承自C語(yǔ)言的方法;另外一種是標(biāo)準(zhǔn)模板庫(kù)里的cstring類型,這是C++的標(biāo)準(zhǔn)方法。(注:NOI中可以使用cstring)字符數(shù)組1.字符數(shù)組的定義用來存放字符型數(shù)據(jù)的數(shù)組為字符數(shù)組,數(shù)組中的一個(gè)元素中只能存放一個(gè)字符,整個(gè)數(shù)組可以存放一個(gè)字符串。。如:charc[5];2.字符數(shù)組的初始化字符數(shù)組的初始化方式同一維數(shù)組的初始化類似,如:charc[5]={‘a(chǎn)’,’b’,’c’,’d’,’e’};charc[6]]={‘a(chǎn)’,’b’,’c’,’d’,’e’,’\0’};等價(jià)于charc[6]]={‘a(chǎn)’,’b’,’c’,’d’,’e’};4.字符串和字符串結(jié)束標(biāo)志在C++語(yǔ)言中字符串是以‘\0’代表結(jié)束標(biāo)志。如:“C.program”是9個(gè)字符的字符串,但在內(nèi)存中占10個(gè)字節(jié),最后一個(gè)字節(jié)存放‘\0’。注意:字符串要用字符數(shù)組來保存,不能用一個(gè)簡(jiǎn)單的字符變量保存,另外,字符數(shù)組的初始化方式也可寫為:

charc[10]=“C.program”;//charc[10]={“C.program”};charc[10]={‘C’,’.’,’p’,’r’,’o’,’g’,’r’,’a’,’m’,’\0’}charc[10]={‘C’,’.’,’p’,’r’,’o’,’g’,’r’,’a’,’m’}//字符數(shù)組多留一個(gè)空間,初始化自動(dòng)填’\0’

與charc[9]={‘C’,’.’,’p’,’r’,’o’,’g’,’r’,’a’,’m’}不等價(jià)5.字符串的輸入、輸出:(1)用cin輸入

cin>>字符串或字符數(shù)組名;例:chars[20];cin>>s;(2)用cout輸出,格式是:

cout<<字符串或字符數(shù)組名;例:chars[20]={“Thisisastring.”};cout<<s;

的輸出結(jié)果為Thisisastring.。也可直接輸出字符串,如:cout<<“Thisisastring”

注:

字符數(shù)組中若沒有字符串結(jié)束標(biāo)志,則一直輸出到在內(nèi)存中碰到’\0’標(biāo)志。字符串輸出調(diào)用格式:cout<<字符串功能:顯示輸出字符串字符串輸入調(diào)用格式1:cin>>字符串變量功能:輸入一個(gè)字符串。調(diào)用格式2:cin.getline(字符串變量,變量大?。┕δ埽簭逆I盤輸入一個(gè)以Enter鍵標(biāo)志結(jié)束的字符串。例1輸入n個(gè)字符串,要求找出其中的最大者。要求使用函數(shù)找最大者。(每個(gè)字符串長(zhǎng)度小于30)例

溫馨提示

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