| 09 陣列

51
C 語語語語語語 09 語語

Upload: season

Post on 05-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

| 09 陣列. 9.1 陣列. | 一維陣列架構. 9.1.1 關於陣列. 陣列是數個相同型態的資料集合. |.  使用一維陣列 >>. 9.1 陣列. | 使用一維陣列. 9.1.1 關於陣列. 宣告 陣列長度 索引 儲存元素. >. 9.1 陣列. | 宣告陣列. 9.1.1 關於陣列. int x[6] ;. >. 9.1 陣列. | 存取陣列元素. 9.1.1 關於陣列. 150. x[3]=150 ; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: | 09 陣列

C 語言入門經典

| 09  陣列

Page 2: | 09 陣列

C 語言入門經典  使用一維陣列 >> |

|一維陣列架構9.1 陣列

9.1.1 關於陣列

陣列是數個相同型態的資料集合

Page 3: | 09 陣列

C 語言入門經典  宣告陣列 >> << 一維陣列架構  

|使用一維陣列

• 宣告• 陣列長度• 索引• 儲存元素

9.1 陣列

9.1.1 關於陣列

Page 4: | 09 陣列

C 語言入門經典  存取陣列元素 >> << 使用一維陣列  

|宣告陣列

int x[6] ;

9.1 陣列

9.1.1 關於陣列

Page 5: | 09 陣列

C 語言入門經典

2

1

 存取陣列元素 >> << 宣告陣列  

|存取陣列元素

x[3]=150 ;i=x[3] ;

[0] [1] [2] [3] [4] [5]

150

150

9.1 陣列

9.1.1 關於陣列

Page 6: | 09 陣列

C 語言入門經典  範例:示範陣列 >> << 存取陣列元素  

|存取陣列元素9.1 陣列

9.1.1 關於陣列

Page 7: | 09 陣列

C 語言入門經典  特定型態的陣列宣告 >> << 存取陣列元素  

|範例:示範陣列

3

2

1

>

4

[0]

100

[1]

200

[2]

300

[3]

400

[4]

500

[5]

600

5

6

7

8

100,200,300,400,500,600

9.1 陣列

9.1.1 關於陣列

Page 8: | 09 陣列

C 語言入門經典  陣列索引值 >> << 範例:示範陣列  

|特定型態的陣列宣告9.1 陣列

9.1.1 關於陣列

double ds[6] ;

• 宣告一個 double 型態的陣列 ds • 可以儲存 6 個 double 型態的數值

Page 9: | 09 陣列

C 語言入門經典  範例:陣列索引存取 >> << 特定型態的陣列宣告  

|陣列索引值

mybArray[k]

• k 是一個 int 型態的變數。• k 被用來做為索引值。

9.1 陣列

9.1.2 陣列的變數存取

Page 10: | 09 陣列

C 語言入門經典   範例:陣列的變數設值 >> << 陣列索引值  

|範例:陣列索引存取9.1 陣列

9.1.2 陣列的變數存取

5

[0]

100

[1]

200

[2]

300

[3]

400

[4]

500

[5]

600

43

3

2

1

Page 11: | 09 陣列

C 語言入門經典   sizeof() >> << 範例:陣列索引存取  

|範例:陣列的變數設值9.1 陣列

9.1.2 陣列的變數存取

[0] [1]

設定第 2 個陣列元素值:x[0]:100,x[1]:200

100

2002004

3

2

1

Page 12: | 09 陣列

C 語言入門經典  範例:陣列的大小 >> << 範例:陣列的變數設值  

| sizeof() 9.1 陣列

9.1.3 陣列長度

int size = sizeof(x) ;

• x 是一個陣列。

• 變數 size 儲存  sizeof()  回傳的整數。

• 回傳值代表陣列 x 所能儲存的位元數目。

Page 13: | 09 陣列

C 語言入門經典

3

2

1

 範例:陣列存取型態錯誤 >> << sizeof()   

|範例:陣列的大小9.1 陣列

9.1.3 陣列長度

x 陣列所能儲存的位元: 24x 陣列所能儲存的 int 數量: 6

Page 14: | 09 陣列

C 語言入門經典  索引超出範圍的錯誤 >> << 範例:陣列的大小  

|範例:陣列存取型態錯誤9.1 陣列

9.1.4 使用陣列的錯誤

4198928,100,456,37814176 2

1

Page 15: | 09 陣列

C 語言入門經典  範例:定義陣列長度 >> << 範例:陣列存取型態錯誤  

|索引超出範圍的錯誤

001 int x[6] ;002 x[0] = 100 ;003 x[1] = 2000 ;004 x[6] = 3000 ;

• 索引值  0~5

• 索引值超出範圍邊界值 5 的錯誤• #define 指令預先定義

3

2

1

9.1 陣列

9.1.4 使用陣列的錯誤

Page 16: | 09 陣列

C 語言入門經典  初始化陣列 >> << 索引超出範圍的錯誤  

|範例:定義陣列長度9.1 陣列

9.1.4 使用陣列的錯誤

Page 17: | 09 陣列

C 語言入門經典

2

1

 範例:陣列的初始化 >> << 範例:定義陣列長度  

|初始化陣列9.1 陣列

9.1.5 初始化陣列

int x[3] = { 10 ,20 ,50 } ;

int y[]={100,200,500} ;

• 建立一個儲存 3 個元素的 int 型態陣列物件。• 將 3 個整數值直接儲存至陣列。

•宣告的陣列會根據指定的初始化內容,自行定義。•y 是一個長度等於 3 的陣列。

Page 18: | 09 陣列

C 語言入門經典  範例:陣列的初始化 >> << 初始化陣列  

|範例:陣列的初始化

x:10,20,50y:100,200,500

9.1 陣列

9.1.5 初始化陣列

3

2

1

Page 19: | 09 陣列

C 語言入門經典  陣列元素列舉 >> << 範例:陣列的初始化  

|範例:陣列的初始化

x:10,0,0d:1.000000,0.000000,0.000000y:100,200,300

5

4

3

2

1

6

9.1 陣列

9.1.5 初始化陣列

warning: excess elements in array initializer

7

Page 20: | 09 陣列

C 語言入門經典

3

2

1

 範例:空陣列 >> << 範例:陣列的初始化  

|陣列元素列舉9.1 陣列

9.1.6 陣列元素的列舉

100, 200, 300, 400, 500, 600,

x[0]x[1]x[2]x[3]x[5]x[4]

Page 21: | 09 陣列

C 語言入門經典

2

1

 二維陣列 >> << 陣列元素列舉  

|範例:空陣列9.1 陣列

9.1.7 空陣列

2009198149,65536,575,

Page 22: | 09 陣列

C 語言入門經典  二維陣列的定義 >> << 空陣列  

|二維陣列9.2 多維陣列

9.2.1 二維陣列

int tdx[3][4] ;

Page 23: | 09 陣列

C 語言入門經典  二維陣列的存取 >> << 二維陣列  

|二維陣列的定義9.2 多維陣列

9.2.1 二維陣列

int tdx[3][6] ;

Page 24: | 09 陣列

C 語言入門經典  範例:二維陣列示範 >> << 二維陣列的定義  

|二維陣列的存取9.2 多維陣列

9.2.1 二維陣列

tdx[1][2] ;

Page 25: | 09 陣列

C 語言入門經典

3 2 1

 範例:透過巢狀迴圈存取二維陣列 >> << 二維陣列的存取  

|範例:二維陣列示範9.2 多維陣列

9.2.1 二維陣列

學生 A :英文( 80 ) , 數學( 80 ) , 國文( 77 ) , 自然( 100 )學生 B :英文( 60 ) , 數學( 88 ) , 國文( 75 ) , 自然( 70 )學生 C :英文( 75 ) , 數學( 40 ) , 國文( 95 ) , 自然( 80 )

Page 26: | 09 陣列

C 語言入門經典

5

4

3

2

1

 範例:二維陣列初始化 >> << 範例:二維陣列示範  

6

|範例:透過巢狀迴圈存取二維陣列9.2 多維陣列

9.2.2 利用巢狀式迴圈列舉二維陣列

學生 A (英文 , 數學 , 國文 , 自然): 學生 B (英文 , 數學 , 國文 , 自然): 學生 C (英文 , 數學 , 國文 , 自然):

80,80,77,100,60,88,75,70,75,40,95,80,

Page 27: | 09 陣列

C 語言入門經典  三維陣列結構 >> << 範例:透過巢狀迴圈存取二維陣列  

|範例:二維陣列初始化9.2 多維陣列

9.2.3 二維陣列的初始化

100,200,300123,456,789

Page 28: | 09 陣列

C 語言入門經典  陣列參數語法 >> << 範例:二維陣列初始化  

|三維陣列結構9.2 多維陣列

9.2.3 三維陣列

xtd[1][2][4]

Page 29: | 09 陣列

C 語言入門經典  範例:函數的陣列引數 >> << 三維陣列結構  

|陣列參數語法9.3 陣列與函數參數的傳址呼叫

void dosome ( xtype xarr[] ) ;

void dosome ( xtype xarr[] ){

Page 30: | 09 陣列

C 語言入門經典  陣列:函數的陣列傳址呼叫 >> << 陣列參數語法  

|範例:函數的陣列引數

xarray[] 參數內容:100,200,300,400,500,600,

X[6]

9.3 陣列與函數參數的傳址呼叫

5

4

3

2

1

Page 31: | 09 陣列

C 語言入門經典  字串語法 >> << 範例:函數的陣列引數  

|陣列:函數的陣列傳址呼叫9.3 陣列與函數參數的傳址呼叫

X[6]

999

x[] 陣列元素: 100,200,300,400,500,600,呼叫 setArray() ...x[] 陣列元素:100,200,300,999,500,600,

5

4

3

2

1

6

7

8

9

Page 32: | 09 陣列

C 語言入門經典  範例:字串與字元 >> << 範例:函數的陣列傳址呼叫  

|字串語法9.4 字串資料

9.4.1 關於字串

char c[]="Good" ;

• c 陣列將會儲存 Good 字串• 輸出字串必須指定 %s 格式碼

Page 33: | 09 陣列

C 語言入門經典  指定字串長度 >> << 字串語法  

|範例:字串與字元9.4 字串資料

9.4.1 關於字串

Good Night and Good Luck

Page 34: | 09 陣列

C 語言入門經典  範例:固定字元陣列字串 >> << 範例:字串與字元  

|指定字串長度9.4 字串資料

9.4.2 宣告固定長度字元陣列

char c[10]="GoodNight" ;

Page 35: | 09 陣列

C 語言入門經典

4

3

2

1

 字串與字元 >> << 指定字串長度  

|範例:固定字元陣列字串

c1:ABCDEFGc2:ABCDEFG l @ \ @ E 轀 w

9.4 字串資料

9.4.2 宣告固定長度字元陣列

Page 36: | 09 陣列

C 語言入門經典  範例:字元陣列與字串 >> << 範例:固定字元陣列字串  

9.4 字串資料

9.4.3 字串與字元

|字串與字元

char c1[7]={'T','A','I','W','A','N','\0'} ;

001 char c4[7] ;002 c4[0] = 'T' ;003 …

Page 37: | 09 陣列

C 語言入門經典   gets() 與 puts() 函數 >> << 字串與字元  

|範例:字元陣列與字串9.4 字串資料

9.4.3 字串與字元

c1:TAIWANc2:TAIWANc3:TAIWAN 髯 蒔篤 TAIWANc4:TAIWAN

Page 38: | 09 陣列

C 語言入門經典  範例:字串存取 >> << 範例:字元陣列與字串  

| gets() 與 puts() 函數

• 與 scanf() 類似,讀取使用者輸入的字串。• c 是一個特定長度的字元陣列變數用以承接使用

者輸入的字串。

gets(c) ;

puts(c) ;pubs("Hello World")

• 提供輸出字串的功能。

9.4 字串資料

9.4.3 字串與字元

Page 39: | 09 陣列

C 語言入門經典

4

3

2

1

 範例: scanf() 的空白字串讀取 >> << gets() 與 puts() 函數  

|範例:字串存取9.4 字串資料

9.4.4 gets() 與 puts()

WELCOME CWELCOME CHello C

Page 40: | 09 陣列

C 語言入門經典

2

1

 字串二維陣列 >> << 範例:字串存取  

|範例: scanf() 的空白字串讀取9.4 字串資料

9.4.4 gets() 與 puts()

Welcome CWelcome

Page 41: | 09 陣列

C 語言入門經典  範例:字串存取 >> << 範例: scanf() 的空白字串讀取  

|字串二維陣列9.5 字串陣列

char sa[4][10] = {"AAA","BBB","CCC","DDD"} ;

• sa 是 4x10 的二維陣列。• 第 1 個數值 4 儲存的串數目。• 第 2 個數值 10 儲存字串的長度。

Page 42: | 09 陣列

C 語言入門經典   strlen() 函數 >> << 字串二維陣列  

|範例:字串存取9.4 字串資料

9.4.3 gets() 與 puts()

Page 43: | 09 陣列

C 語言入門經典  範例:取得字串長度 >> << 範例:字串存取  

| strlen() 函數9.6 字串函數

9.6.1 取得字串長度

size_t strlen(const char *s)

• s 為測試長度的字串,而回傳值代表字串的長度。• size_t 型態的數值,是一個無號的整數。

Page 44: | 09 陣列

C 語言入門經典

2

1

 大小寫轉換函數 >> << strlen() 函數  

|範例:取得字串長度9.6 字串函數

9.6.1 取得字串長度

字串長度: 13

Page 45: | 09 陣列

C 語言入門經典  範例:轉換字串大小寫 >> << 範例:取得字串長度  

|大小寫轉換函數9.6 字串函數

9.6.2 轉換大小寫

char *strlwr(char *str) ;char *strupr(char *str) ;

• strlwr() 將參數 str 的組成字元全部轉換成為小寫。

• strupr() 則將參數 str 的組成字元全部轉換成為大寫。

Page 46: | 09 陣列

C 語言入門經典

3

2

1

 搜尋字串函數 – strcspn >> << 大小寫轉換函數  

|範例:轉換字串大小寫

大寫: HELLO WORLD !小寫: hello world !

9.6 字串函數

9.6.2 轉換大小寫

Page 47: | 09 陣列

C 語言入門經典  範例:搜尋字元 >> << 範例:轉換字串大小寫  

|搜尋字串函數 - strcspn9.6 字串函數

9.6.3 搜尋子字串

size_t strcspn(  const char *s1, const char *s2);

• s1 為所要搜尋的主字串。• s2 為搜尋條件。• 回傳的結果值表示 s2 中任何一個字元第一次

出現在 s1 字串中的索引位置。

Page 48: | 09 陣列

C 語言入門經典

3

2

1

 範例:字串存取 >> << 搜尋字串函數 - strcspn   

|範例:搜尋字元

出現 HELLO 任一字元的第一個索引位置: 4

4

9.6 字串函數

9.6.3 搜尋子字串

Page 49: | 09 陣列

C 語言入門經典  範例:字串存取 >> << 範例:搜尋字元  

|範例:字串存取

char *strcpy(char *s1,const char *s2);

char *strcat(char *s1,const char *s2);

• s1 與 s2 是兩個要合併的字串。 • s2 的值被合併至 s1 ,最後回傳合併後的字串。

• 字串常值 s2 的內容,複製到 s1 ,並且回傳 s1 的內容

9.6 字串函數

9.6.4 複製與串字串

Page 50: | 09 陣列

C 語言入門經典

5

4

3

2

1

 範例:字串存取 >> << 範例:字串存取  

|範例:字串存取

原始字串: ABCDEFGH複製字串: ABCDEFGH回傳字串: ABCDEFGH

7

6

9.6 字串函數

9.6.4 複製與串字串

Page 51: | 09 陣列

C 語言入門經典

5

4

3

2

1

 | << 範例:字串存取  

|範例:字串存取9.6 字串函數

9.6.4 複製與串字串

原始字串: ABCDEFGH  輸入欲合併字串:合併結果: ABCDEFGHXYZ

XYZ

6