delphi 數(shù)組定義教學(xué)文案_第1頁(yè)
delphi 數(shù)組定義教學(xué)文案_第2頁(yè)
delphi 數(shù)組定義教學(xué)文案_第3頁(yè)
delphi 數(shù)組定義教學(xué)文案_第4頁(yè)
delphi 數(shù)組定義教學(xué)文案_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。delphi 數(shù)組定義-在c語(yǔ)言中有:a5=1,2,3,4,5;那么在delphi中,這個(gè)數(shù)組的賦值該怎么寫?問題補(bǔ)充:下面有人說的對(duì),我就是想在聲明數(shù)組的時(shí)候賦初值,至于初值的內(nèi)容你們不需要知道,我想知道的只是申明的時(shí)候賦值的格式,而不是通過一個(gè)過程去實(shí)現(xiàn)vara:=array1.5ofinteger=(1,2,3,4,5)只有全局變量才能賦初始值,而且5個(gè)值都要賦滿s:array1.264ofinteger;s:=(1),(2),(2),(1),(1),(2),(2),(1),(2),(1),(1)

2、,(1),(1),(2),(2),(1),(1),(2),(1),(1),(2),(2),(1),(1),(2),(1),(1),(2),(2),(2),(1),(2),(1),(2),(1),(2),(2),(2),(2),(1),(2),(2),(1),(2),(1),(1),(2),(1),(2),(1),(1),(2),(1),(1),(1);s:=(122112221211111111111111222221212121212121212);都顯示錯(cuò)誤哦;C語(yǔ)言可以的哦靜態(tài)數(shù)組的定義方法/1.標(biāo)準(zhǔn)方法:varMyArr:array0.10ofInteger;/定義靜態(tài)數(shù)組-/2.可以

3、使用非0下標(biāo):varMyArr:array9.10ofInteger;/不能提倡,這樣不容易與系統(tǒng)函數(shù)溝通-/3.根據(jù)預(yù)定義類型來聲明數(shù)組:typeTMyArr=array0.10ofInteger;/先定義一個(gè)數(shù)組類型varMyArr:TMyArr;/再定義靜態(tài)數(shù)組-/4.在非過程區(qū)可以直接賦值:varMyArr:array0.2ofInteger=(11,22,33);-/5.多維數(shù)組:varMyArr:array0.2,0.2ofInteger;begin/使用MyArr1,2:=100;end;-/6.根據(jù)子界定義數(shù)組:typeTRange=0.10;varMyArr:arrayTRa

4、ngeofInteger;-/7.根據(jù)枚舉定義數(shù)組:typeTEnums=(Enum1,Enum2,Enum3);varMyArr:arrayTEnumsofstring;beginMyArrEnum1:=萬(wàn)一;ShowMessage(MyArrEnum1);/萬(wàn)一end;-/8.根據(jù)其他類型定義數(shù)組:varMyArr:arrayByteofChar;beginMyArr255:=#65;ShowMessage(MyArr255);/Aend;/應(yīng)盡量不使用內(nèi)建類型,可以新建類型:typeTNewByte=Byte;varMyArr:arrayTNewByteofChar;beginMyArr

5、255:=#65;ShowMessage(MyArr255);/Aend;/也可以使用類型別名:typeTChar=typeChar;varMyArr:arrayTCharofByte;beginMyArrC:=255;ShowMessage(IntToStr(MyArrC);/255end;/同時(shí)定義類型:typeMyRec=records:string;r:Real;b:Byte;end;varArr1:array0.100ofMyRec;Arr2:array0.100ofrecords:string;r:Real;b:Byte;end;/可以直接這樣定義Arr3:packedarray0

6、.100ofMyRec;/壓縮數(shù)組定義,好像沒有區(qū)別?一.一維數(shù)組A:Arrayofinteger;setlength(A,5)二:二維數(shù)組定義整型二維數(shù)組aiMyarray:arrayofarrayofinteger大小設(shè)置setlength(aiMyarray,5,5)三、多維數(shù)組的定義當(dāng)一維數(shù)組元素的類型也是一維數(shù)組時(shí),便構(gòu)成了二維數(shù)組。二維數(shù)組定義的一般格式:array下標(biāo)類型1ofarray下標(biāo)類型2of元素類型;但我們一般這樣定義二維數(shù)組:array下標(biāo)類型1,下標(biāo)類型2of元素類型;說明:其中兩個(gè)下標(biāo)類型與一維數(shù)組定義一樣,可以看成“下界1.上界1”和“下界2.上界2”,給出二維

7、數(shù)組中每個(gè)元素(雙下標(biāo)變量)可以使用下標(biāo)值的范圍。of后面的元素類型就是基類型。一般地,n維數(shù)組的格式為:array下標(biāo)類型1,下標(biāo)類型2,下標(biāo)類型nof元素類型;其中,下標(biāo)類型的個(gè)數(shù)即數(shù)組的維數(shù),且說明了每個(gè)下標(biāo)的類型及取值范圍。*多維數(shù)組元素的引用多維數(shù)組的數(shù)組元素引用與一維數(shù)組元素引用類似,區(qū)別在于多維數(shù)組元素的引用必須給出多個(gè)下標(biāo)。引用的格式為:下標(biāo)1,下標(biāo)2,下標(biāo)n說明:顯然,每個(gè)下標(biāo)表達(dá)式的類型應(yīng)與對(duì)應(yīng)的下標(biāo)類型一致,且取值不超出下標(biāo)類型所指定的范圍。例如,設(shè)有說明:引用內(nèi)容typematrix=array1.5,1.4ofinteger;vara:matrix;則表示a是二維數(shù)組

8、,共有5*4=20個(gè)元素,它們是:引用內(nèi)容a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4a3,1a3,2a3,3a3,4a4,1a4,2a4,3a4,4a5,1a5,2a5,3a5,4因此可以看成一個(gè)矩陣,a4,2即表示第4行、第2列的元素。由于計(jì)算機(jī)的存儲(chǔ)器是一維的,要把二維數(shù)組的元素存放到存儲(chǔ)器中,pascal是按行(第一個(gè)下標(biāo))的次序存放,即按a1,1a1,2a1,3a1,4a2,1,a5,4的次序存放于存儲(chǔ)器中某一組連續(xù)的存儲(chǔ)單元之內(nèi)。對(duì)于整個(gè)二維數(shù)組的元素引用時(shí),大多采用二重循環(huán)來實(shí)現(xiàn)。如:給如上說明的二維數(shù)組a進(jìn)行賦值:引用內(nèi)容ai,j=i*j。fori:=1to

9、5doforj:=1to4doai,j:=i*j;對(duì)二維數(shù)組的輸入與輸出也同樣可用二重循環(huán)來實(shí)現(xiàn):引用內(nèi)容fori:=1to5dobeginforj:=1to4doread(ai,j);end;fori:=1to5dobeginforj:=1to4dowrite(ai,j:5);end;eg、多維數(shù)組的應(yīng)用示例例7、設(shè)有一程序:引用內(nèi)容programex5_3;constn=3;typematrix=array1.n,1.nofinteger;vara:matrix;i,j:1.n;beginfori:=1tondobeginforj:=1tondoread(ai,j);readln;end;

10、fori:=1tondobeginforj:=1tondowrite(aj,i:5);writeln;end;end.且運(yùn)行程序時(shí)的輸入為:引用內(nèi)容213331121則程序的輸出應(yīng)是:引用內(nèi)容231132311例8、輸入4名學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、pascal五門課的考試成績(jī),求出每名學(xué)生的平均分,打印出表格。分析:用二維數(shù)組a存放所給數(shù)據(jù),第一下標(biāo)表示學(xué)生的學(xué)號(hào),第二個(gè)下標(biāo)表示該學(xué)生某科成績(jī),如ai,1、ai,2、ai,3、ai,4、ai,5分別存放第i號(hào)學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、pascal五門課的考試成績(jī),由于要求每個(gè)學(xué)生的總分和平均分,所以第二下標(biāo)可多開兩列,分別存放每個(gè)學(xué)生5門

11、成績(jī)和總分、平均分。源程序如下:引用內(nèi)容programex5_4;vara:array1.4,1.7ofreal;i,j:integer;beginfillchar(a,sizeof(a),0);函數(shù)fillchar用以將a中所有元素置為0writeln(Enter4studentsscore);fori:=1to4dobeginforj:=1to5do讀入每個(gè)人5科成績(jī)beginread(ai,j);讀每科成績(jī)時(shí)同時(shí)統(tǒng)計(jì)總分ai,6:=ai,6+ai,j;end;readln;ai,7:=ai,6/5;求平均分end;writeln(No.Mat.Phy.Eng.Che.Pas.Tot.Av

12、e.);輸出成績(jī)表fori:=1to4dobeginwrite(i:2,);forj:=1to7dowrite(ai,j:9:2);writeln;換行end;end.例9、輸入一串字符,字符個(gè)數(shù)不超過100,且以“.”結(jié)束。判斷它們是否構(gòu)成回文。分析:所謂回文指從左到右和從右到左讀一串字符的值是一樣的,如12321,ABCBA,AA等。先讀入要判斷的一串字符(放入數(shù)組letter中),并記住這串字符的長(zhǎng)度,然后首尾字符比較,并不斷向中間靠攏,就可以判斷出是否為回文。源程序如下:引用內(nèi)容programex5_5;varletter:array1.100ofchar;i,j:0.100;ch:c

13、har;begin讀入一個(gè)字符串以.號(hào)結(jié)束write(Inputastring:);i:=0;read(ch);whilech.dobegini:=i+1;letteri:=ch;read(ch)end;判斷它是否是回文j:=1;while(j=ithenwriteln(Yes.)elsewriteln(No.);end.例10、奇數(shù)階魔陣魔陣是用自然數(shù)1,2,3,n2填n階方陣的各個(gè)元素位置,使方陣的每行的元素之和、每列元素之和及主對(duì)角線元素之和均相等。奇數(shù)階魔陣的一個(gè)算法是將自然數(shù)數(shù)列從方陣的中間一行最后一個(gè)位置排起,每次總是向右下角排(即Aij的下一個(gè)是Ai+1,j+1)。但若遇以下四種

14、情形,則應(yīng)修正排數(shù)法。(1)列排完(j=n+1時(shí)),則轉(zhuǎn)排第一列;(2)行排完(即i=n+1時(shí)),則轉(zhuǎn)排第一行;(3)對(duì)An,n的下一個(gè)總是An,n-1;(4)若Aij已排進(jìn)一個(gè)自然數(shù),則排Ai1,j2。例如3階方陣,則按上述算法可排成:438951276有了以上的算法,解題主要思路可用偽代碼描述如下:1i?ndiv2+1,y?n/*排數(shù)的初始位置*/2ai,j?1;3fork:=2ton*ndo4計(jì)算下一個(gè)排數(shù)位置!(i,j);5ifai,j0then6i?i-1;7j?j-2;6ai,j?k;7endfor對(duì)于計(jì)算下一個(gè)排數(shù)位置,按上述的四種情形進(jìn)行,但我們應(yīng)先處理第三處情況。算法描述如下

15、:1if(i=n)and(j=n)then2j?j-1;/*下一個(gè)位置為(n,n-1)*/;3else4i?imodn+1;5j?jmodn+1;6endif;源程序如下:引用內(nèi)容programex5_7;vara:array1.99,1.99ofinteger;i,j,k,n:integer;beginfillchar(a,sizeof(a),0);write(n=);readln(n);i:=ndiv2+1;j:=n;ai,j:=1;fork:=2ton*ndobeginif(i=n)and(j=n)thenj:=j-1elsebegini:=imodn+1;j:=jmodn+1;end;

16、ifai,j0thenbegini:=i-1;j:=j-2;end;ai,j:=k;end;fori:=1tondobeginforj:=1tondowrite(ai,j:5);writeln;end;end.二、二維數(shù)組合并定義:var數(shù)組名:array下標(biāo)類型1,下標(biāo)類型2of元素類型;下標(biāo)類型的個(gè)數(shù)即數(shù)組的維數(shù),且說明了每個(gè)下標(biāo)的類型及取值范圍。例如,定義:vara:array1.4,1.3ofinteger;則表示a是二維數(shù)組,共有4*3=12個(gè)元素,它們是:a1,1a1,2a1,3a2,1a2,2a2,3a3,1a3,2a3,3a4,1a4,2a4,3因此可以看成一個(gè)矩陣,a4,2即

17、表示第4行、第2列的元素。雖然邏輯上可以把二維數(shù)組看作是一張表格或一個(gè)矩陣,但在計(jì)算機(jī)內(nèi)部,二維數(shù)組的所有元素對(duì)應(yīng)的存儲(chǔ)單元是連續(xù)的,與一維數(shù)組的存儲(chǔ)方式在本質(zhì)上是相同的。對(duì)于整個(gè)二維數(shù)組的元素引用時(shí),大多采用二重循環(huán)來實(shí)現(xiàn)。如給上例定義的二維數(shù)組a進(jìn)行賦值:fori:=1to4doforj:=1to3doai,j:=i*j;同樣用二重循環(huán)來實(shí)現(xiàn)二維數(shù)組的輸入與輸出:fori:=1to4doforj:=1to3doread(ai,j);fori:=1to4dobeginforj:=1to3dowrite(ai,j:5);writeln;end;例5、已知數(shù)組A中,每個(gè)元素A(I,J)在存貯時(shí)要

18、占3個(gè)字節(jié),設(shè)I從1變化到8,J從1變化到10,分配內(nèi)存時(shí)是從地址SA開始連續(xù)按行存貯分配的。試問:A(5,8)的起始地址為()。NOIP2000高中單選13題A)SA+141B)SA+180C)SA+222D)SA+225例6、仔細(xì)閱讀下列程序段:vara:array1.3,1.4ofinteger;NOIP2000高中單選16題b:array1.4,1.3ofinteger;x,y:integer;beginforx:=1to3dofory:=1to4doax,y:=x-y;forx:=4downto1dofory:=1to3dobx,y:=ay,x;writeln(b3,2);end.上

19、列程序段的正確輸出是()。A)-1B)-2C)-3D)4分析:數(shù)組a:數(shù)組b:012301210-1-2-101210-1-210-3-2-1例7、輸入4名學(xué)生數(shù)學(xué)、物理、英語(yǔ)、化學(xué)、pascal五門課的考試成績(jī),求出每名學(xué)生的平均分,打印出表格。vara:array1.4,1.7ofreal;下標(biāo)1學(xué)號(hào),下標(biāo)2某科成績(jī)i,j:integer;下標(biāo)2多兩列,分別存放總分、平均分beginfillchar(a,sizeof(a),0);用函數(shù)fillchar將數(shù)組a中所有元素置為0writeln(Input4studentsscore);fori:=1to4dobeginforj:=1to5dobeginread(ai,j);ai,6:=ai,6+ai,j;讀每科成績(jī)時(shí)同時(shí)統(tǒng)計(jì)總分end;ai,7:=ai,6/5;求平均分end;writeln(No

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論