謝麗聰老師C語言課件-7數(shù)組(1)-2009_第1頁
謝麗聰老師C語言課件-7數(shù)組(1)-2009_第2頁
謝麗聰老師C語言課件-7數(shù)組(1)-2009_第3頁
謝麗聰老師C語言課件-7數(shù)組(1)-2009_第4頁
謝麗聰老師C語言課件-7數(shù)組(1)-2009_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章 數(shù)組,7.1一維數(shù)組的定義和引用 7.2二維和多維數(shù)組的定義和引用 7.3字符串和字符數(shù)組 7.4程序舉例(排序),把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。 一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。 數(shù)組有數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。,7.1 一維數(shù)組的定義和使用,7.1.1 一維數(shù)組的定義方式 類型說明符 數(shù)組名常量表達(dá)式;,任一種基 本數(shù)據(jù)類 型或構(gòu)造 數(shù)據(jù)類型,用戶定義 的數(shù)組標(biāo) 識符,表示數(shù)據(jù) 元素的個 數(shù),也稱 為數(shù)組的 長度,例如:,int a10; float b10

2、,c20; char ch20;,注意:,數(shù)組元素與變量一樣地使用(數(shù)組不能與 變量一樣地使用)。 數(shù)組元素與變量主要區(qū)別: 1它們的名字形式不同 2同一數(shù)組中各元素必須同類型 3. 數(shù)組名不能與其它變量名相同。 例如:main() int a ; float a10 ; ,變量重名,4方括號中常量表達(dá)式表示數(shù)組元素的個數(shù),但是其下標(biāo)從0開始計算。因此5個元素分別為: a0,a1,a2,a3,a4 5定義時不能在方括號中用變量來表示元素的個數(shù),但是可以是符號常數(shù)或常量表達(dá)式。 6允許在同一個類型說明中,說明多個數(shù)組和多個變量。例如: int a,b,c,d,k110,k220;,例如: #de

3、fine FD 5 main() int a3+2,b7+FD; main() int n=5; int an; ,定義時不能用, 但引用時可以,7.1.2 一維數(shù)組元素的引用,數(shù)組元素是組成數(shù)組的基本單元,也是一種變量, 其標(biāo)識方法為數(shù)組名后跟一個下標(biāo),表示元素在數(shù)組中的順序號。 數(shù)組元素的一般形式為: 數(shù)組名下標(biāo) 其中下標(biāo)只能為整型常量或整型表達(dá)式。如為小數(shù)時,C編譯將自動取整。 例如:a5 ai+j ai+ 都是合法的數(shù)組元素。,定義時不能用, 引用時可以,數(shù)組元素通常也稱為下標(biāo)變量。必須先定義數(shù)組,才能使用下標(biāo)變量。在語言中只能逐個地使用下標(biāo)變量,而不能一次引用整個數(shù)組。 例如: 輸出

4、有10個元素的數(shù)組必須使用循環(huán)語句逐個輸出各下標(biāo)變量: for(i=0; i10; i+) printf(%d,ai); 而不能用一個語句輸出整個數(shù)組。 下面的寫法是錯誤的: printf(%d,a);,例7.1,void main() int i,a10; for(i=0;i=0;i-) printf(%d ,ai); ,運行結(jié)果:9 8 7 6 5 4 3 2 1 0,空 格,逐一 賦值,逐一 輸出,例7.2,void main() int i,a10; for(i=0;i=0;i-) printf(%d,ai); ,運行結(jié)果:9876543210,例7.3,void main() int

5、 i,a10; for(i=0;i10;) ai+=2*i+1; for(i=0;i=9;i+) printf(%d ,ai); printf(n%d %dn,a5.2,a5.8); 運行結(jié)果:1 3 5 7 9 11 13 15 17 19 11 11,7.1.3 一維數(shù)組的初始化,給數(shù)組賦值的方法除了用賦值語句對數(shù)組元素逐個賦值外,還可采用初始化賦值和動態(tài)賦值的方法。 初始化賦值的一般形式為: 類型說明符 數(shù)組名常量表達(dá)式=值,值值; 其中在 中的各數(shù)據(jù)值即為各元素的初值,各值之間用逗號間隔。 例如: int a10= 0,1,2,3,4,5,6,7,8,9 ; 相當(dāng)于,a0=0;a1=1

6、.a9=9;,對數(shù)組的初始化賦值還有以下幾點規(guī)定:,1)可以只給部分元素賦初值。 當(dāng) 中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值。 例如: int a10=0,1,2,3,4; 表示只給a0a45個元素賦值,而后5個元素自動賦0值。 2)只能給元素逐個賦值,不能給數(shù)組整體賦值。 例如給十個元素全部賦1值,只能寫為: int a10=1,1,1,1,1,1,1,1,1,1; 而不能寫為:int a10=1;,3)如給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù)。 例如: int a5=1,2,3,4,5; 可寫為: int a=1,2,3,4,5;,例7.4,void main()

7、 int i,max,a10; printf(input 10 numbers:n); for(i=0;imax) max=ai; printf(maxmum=%dn,max);,定義一個10個元素的整型數(shù)組,逐一輸入十個 數(shù)組元素的值,逐一比 較,得出 最大值,輸入:1 4 5 2 31 4 6 7 3 0,輸出: maxmum=31,例7.5,void main() int i,j,p,q,s,a10; printf(n input 10 numbers:n); for(i=0;i10;i+)scanf(%d, ,逐一輸入十個 數(shù)組元素的值,做十次循環(huán),輸入:1 4 5 2 9 8 6 7

8、 3 0,輸出:9 8 7 6 5 4 3 2 1 0,從一維數(shù)組可以延伸到二維甚至多位數(shù)組 數(shù)組a: a0 a1 a2 a3 a29 a30 數(shù)組c: c00 c01 c02 c03 c04 c10 c11 c12 c13 c14 c20 c21 c22 c23 c24 數(shù)組x: x000 x001 x002 x010 x011 x012 x100 x101 x102 x110 x111 x112 x200 x201 x202 x210 x211 x212,7.2 二維和多維數(shù)組的定義和使用,7.2.1 數(shù)組元素名一般形式 數(shù)組名表達(dá)式1表達(dá)式2表達(dá)式3表達(dá)式n 例1: a3 bij c2u

9、*4+1.5k 例2: 若i=2、j=3.7 則 bij 、 bj-i+13.256 與 b23 表示同一個數(shù)組元素,若此某一表達(dá)式為實型,則只把該表達(dá)式值的整數(shù)部分作為相應(yīng)下標(biāo); 所有數(shù)組名部分相同、維數(shù)相同、相應(yīng)下標(biāo)相同的數(shù)組元素名表示同一個數(shù)組元素。,7.2.2 數(shù)組的定義 把下面形式的數(shù)組說明符寫在定義部分 數(shù)組名整型常量表達(dá)式1整型常量表達(dá)式2 整型常量表達(dá)式n 例3: #define N 10 void main( ) int a ,b=2 , f30,k; char c1 ,c2 ,a22*N+1, wk ; 7.2.3 引用時注意:只引用數(shù)組元素、不引 用數(shù)組(字符型數(shù)組例外)

10、,變量下標(biāo)不行,7.2.4 數(shù)組的初始化(在定義部分使數(shù)組中部分或全部元素得到值) 例4 int k , a3=5,7,2 ,l ; float v5=7.1, 2.5, f ,q=36.8 ; char c =a , ,p ,e ,n ;-字符數(shù)組 char c = a , ,p ,e ,n ,0 ; char c = ”a pen” ; int a32=1,2,3,4,5; int a32= 1,2,3,4,5; char c 2=a ,b ,c ,d,系統(tǒng)自動補上,?,多維數(shù)組可按行分段賦值;也可按行連續(xù)賦 值。 例如對數(shù)組a53,以下賦值結(jié)果等價: 1)按行分段賦值可寫為: int a

11、53= 80,75,92,61,65,71, 59,63,70,85,87,90,76,77,85; 2)按行連續(xù)賦值可寫為: int a53= 80,75,92,61,65,71,59,63, 70,85,87,90,76,77,85;,7.2.5 數(shù)組中各元素在內(nèi)存中的排列順序 按行排列 數(shù)組c: c00 c01 c02 c03 c04 c10 c11 c12 c13 c14 c20 c21 c22 c23 c24 數(shù)組x: x000 x001 x002 x010 x011 x012 x100 x101 x102 x110 x111 x112 x200 x201 x202 x210 x21

12、1 x212,1)可以只對部分元素賦初值,未賦初值的元素自動取0值。例如: int a33=1,2,3; 賦值后各元素的值為: int a 33=0,1,0,0,2,3; 賦值后的元素值為:,2)如對全部元素賦初值,則第一維的長度可以不給出。 例如: int a33=1,2,3,4,5,6,7,8,9; 可以寫為: int a3=1,2,3,4,5,6,7,8,9;,例7.6,void main( ) int k=2, a0=10, a1=11,a2=12,ak=8; int a3=20,21,22 ; ak=18; for ( k=0;k=2;k+) printf( ”%d,%dn”,ak,

13、ak ); ,a0=20,a1=21,a2=22,a2=18,運行結(jié)果:,8,20,8,21,8,18,變量,非數(shù)組元素,例7.7,void main( ) int a6,k ; float t ; for (k=0;k=5;k+) ak=5*k+1 ; for (k=0;k=5;k+) t=0.7*k; printf( ”%d,”,at); ,輸出:1,1,6,11,11,16,例7.8 寫出下面程序的運行結(jié)果并比較它們的區(qū)別 void main( ) int a44= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,j,k; for(j=0;j=3;j+) f

14、or(k=0;k=3;k+) printf(”%3d”,ajk); printf(”n”) ; ,1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,輸出:,j=3,k=0,循環(huán)外換行,做一次,void main( ) int a44= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,j,k; for(j=0;j=3;j+) for(k=0;k=3;k+) printf(”%3d”,akj); printf(”n”) ; ,k=3,j=0,1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16,輸出:,void main( ) int a44= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,j,k; for(j=0;j=3;j+) for(k=0;k=3;k+) printf(”%3d”,ajk); printf(”n”) ; 1 2 3 ,第二層循環(huán)內(nèi)換行, 輸出每個數(shù)就做一次,void main( ) int a44= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,j,k; for(j=0;j=3;j+) for(k=0;k=3;k+) printf(”%3d”,ajk); printf(”n”) ; 1 2 3 4

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論