07 陣列與字串

119
7章 陣列與字串 陣列簡介 字元與字串處理 字串處理函數簡介 上機實習課程

Upload: shademoon

Post on 05-Jul-2015

5.297 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 07 陣列與字串

第7章 陣列與字串

陣列簡介

字元與字串處理

字串處理函數簡介

上機實習課程

Page 2: 07 陣列與字串

2

在C語言,一維陣列的語法宣告如下:

當然也可以在宣告時,直接設定初始值:

資料型態:表示該陣列存放的資料型態,可以是基本的資料型態(如int,float,char…等),或延伸的資料型態(如struct、union…等,這部份在第九章會說明)。

一維陣列(1)7-1 陣列簡介

資料型態 陣列名稱[陣列長度];

資料型態 陣列名稱[陣列大小]={初始值1,初始值2,…};

Page 3: 07 陣列與字串

3

陣列名稱:命名規則與變數相同。

元素個數:表示陣列可存放的資料個數,為一

個正整數常數。

若是只有中括號,即沒有指定常數值,則表示

是定義不定長度的陣列(陣列的長度會由設定初

始值的個數決定)。

例如底下定義的陣列Temp,其元素個數會自動

設定成3:

7-1 陣列簡介

int Temp[]={1, 2, 3};

Page 4: 07 陣列與字串

4

一維陣列(2)

程式範例:一維陣列的宣告應用範例:

CH07_01.c

7-1 陣列簡介

Page 5: 07 陣列與字串

5

執行結果

7-1 陣列簡介

Page 6: 07 陣列與字串

6

程式解說

7-1 陣列簡介

第6行宣告整數陣列時,直接設定學生成績初始值。

第9行中透過for迴圈,設定count變數從0開始計算,並

當作陣列的索引值,把使用者輸入的資料寫入陣列中。

第12行則使用整數變數Total_Score累計總分。

Page 7: 07 陣列與字串

7

一維陣列(3)

程式範例:一維陣列的初始化應用範例:

CH07_02.c

7-1 陣列簡介

Page 8: 07 陣列與字串

8

7-1 陣列簡介

Page 9: 07 陣列與字串

9

執行結果

7-1 陣列簡介

Page 10: 07 陣列與字串

10

程式解說

7-1 陣列簡介

第6行中,設定Score[10]={0}。

因為指定的初始值個數少於陣列元素,所以都一律指定成0。

第16行由scanf()函數逐步把輸入的分數寫到 Score 陣列。

第18行則設定學號輸入 0 跳出迴圈。

Page 11: 07 陣列與字串

11

命令列引數(1)

宣告範例如下所示:

其中第二個引數的宣告為一種宣告陣列作為引數的方式,可以更明確地表達出它是一個一維陣列,而且每個元素為ㄧ字串。

假設這個程式的名稱為read.c,而我們下達了以下的指令:

7-1 陣列簡介

int main(int argc, char *argv[])

{

……

}

read this is a test

Page 12: 07 陣列與字串

12

命令列引數(2)

程式範例:命令列引數的應用範例:CH07_03.c

7-1 陣列簡介

Page 13: 07 陣列與字串

13

執行結果

7-1 陣列簡介

Page 14: 07 陣列與字串

14

程式解說

7-1 陣列簡介

第4行是命令列引數的傳遞宣告,宣告後各位即可在執行

時傳遞參數。

第7行是用來判斷如果argc=1,表示未指定其它參數,只

有程式名稱。

第15行~第16行是列印出存放在argv[ ]陣列中的參數,由

於argv[0]是儲存程式名稱的字串,所以i從1開始執行。

Page 15: 07 陣列與字串

15

在C語言中,二維陣列的宣告格式如下:

例如宣告陣列A的列數是2,行數是3,所有元素個數為6。格式如下所示:

此陣列共有2列3行的元素,也就是每列有3個元素,也就是陣列元素分別是A[0][0],A [0][],A[0][2],…,A[1][2]。

二維陣列(1)7-1 陣列簡介

資料型態 陣列名稱 [m] [n];

int A [2] [3];

Page 16: 07 陣列與字串

16

陣列中元素的分佈圖說明如下:

在存取二維陣列中的資料時,使用的索引值(index)仍然是由0開始計算。

至於在二維陣列設初始值時,為了方便區隔行與列,所以除了最外層的{}外,最好以{}括住每一列的元素初始值,並以「,」區隔每個陣列元素,例如:

7-1 陣列簡介

int A[2][3]={{1,2,3},{2,3,4}};

Page 17: 07 陣列與字串

17

二維陣列(2)

程式範例:二維陣列的宣告與應用範例:

CH07_04.c

7-1 陣列簡介

Page 18: 07 陣列與字串

18

執行結果

程式解說

7-1 陣列簡介

第7行在宣告二維陣列Tel_fee時,同步設定起始值。

第13行輸出每筆電話號碼與費用。

Page 19: 07 陣列與字串

19

二維陣列(3)

程式範例:二維陣列與矩陣相加的應用範例:

CH07_05.c

7-1 陣列簡介

Page 20: 07 陣列與字串

20

執行結果

7-1 陣列簡介

Page 21: 07 陣列與字串

21

程式解說

7-1 陣列簡介

第7~8行分別設定了兩個3x3二維陣列來代表兩個矩陣。

第11~13行中則設計了雙層的巢狀for迴圈,來在兩陣列相

同的位置上做加法運算。

Page 22: 07 陣列與字串

22

多維陣列(1)

定義方式如下所示:

以下舉出C中幾個多維陣列的宣告實例:

7-1 陣列簡介

資料型態 陣列名稱[元素個數] [元素個數] [元素個數]…….

[元素個數];

int Three_dim[2][3][4]; /* 三維陣列 */

int Four_dim[2][3][4][5]; /* 四維陣列 */

Page 23: 07 陣列與字串

23

三維陣列的表示法和二維陣列一樣皆可視為是

一維陣列的延伸,請看下圖:

例如:宣告一個int型態的三維陣列A

7-1 陣列簡介

Page 24: 07 陣列與字串

24

上列程式中的陣列A是一個三維的陣列,它的

三個維數的元素個數都是2,因此陣列A共有

8(亦即2×2×2)個元素。

可以使用立體圖形表示如下:

7-1 陣列簡介

Page 25: 07 陣列與字串

25

多維陣列(2)

程式範例:三維陣列的宣告與應用範例:

CH07_06.c

7-1 陣列簡介

Page 26: 07 陣列與字串

26

執行結果

7-1 陣列簡介

Page 27: 07 陣列與字串

27

程式解說

7-1 陣列簡介

在第7行中,宣告了一個2x2x2的三維陣列,各位可以

將其簡化為2個2x2的二維陣列,並同時設定初始值。

由於A是三維陣列,所以能夠利用第11-13行三層巢狀

迴圈將元素值讀出。

Page 28: 07 陣列與字串

28

陣列記憶體配置簡介(1)

程式範例:陣列記憶體配置說明範例:CH07_07.c

7-1 陣列簡介

Page 29: 07 陣列與字串

29

7-1 陣列簡介

Page 30: 07 陣列與字串

30

執行結果

程式解說

7-1 陣列簡介

第6~8行分別宣告相同型態的變數與陣列。

在第10、12、14行中,各位發現陣列所佔用的空間大

小與資料型態與元素個數有關。

例如b_Array[5]陣列由整數型態組成(在此整數型態佔用

4位元組),其佔用的記憶體空間即為4*5=20位元組。

Page 31: 07 陣列與字串

31

陣列記憶體配置簡介(2)

程式範例:取址運算子與一維陣列的使用範例:

CH07_08.c

7-1 陣列簡介

Page 32: 07 陣列與字串

32

執行結果

程式解說

7-1 陣列簡介

從第11、13行的輸出結果可以看出,陣列每移動一次索

引值,其實是在記憶體位移4個位元組(因為整數型態),

才取出陣列的下一筆資料。

Page 33: 07 陣列與字串

33

陣列記憶體配置簡介(3)

程式範例:取址運算子與二維陣列的使用範例:

CH07_09.c

7-1 陣列簡介

Page 34: 07 陣列與字串

34

執行結果

7-1 陣列簡介

Page 35: 07 陣列與字串

35

程式解說

7-1 陣列簡介

第6行定義定義整數二維陣列,並直接設定初使值。

第11行我們利用for迴圈輸出陣列元素值及第13行輸

出該元素在記憶體中的位址。

從本程式中各位可發現二維陣列在記憶體中的儲存

方式仍是以線性的方式來處理。

Page 36: 07 陣列與字串

36

陣列名稱其實可用來指出陣列的起始位址。例

如宣告以下指令:

在撰寫程式時,也可以直接使用陣列名稱來取

得陣列的起始位址。如下圖所示:

7-1 陣列簡介

int Num[5]={ 11, 22, 33, 44, 55 };

Page 37: 07 陣列與字串

37

陣列記憶體配置簡介(4)

程式範例:陣列名稱與位址的說明範例:CH07_10.c

7-1 陣列簡介

Page 38: 07 陣列與字串

38

執行結果

7-1 陣列簡介

Page 39: 07 陣列與字串

39

程式解說

7-1 陣列簡介

第13行,使用&運算子輸出每個陣列元素的位址,

第15行則輸出Num+count的值,雖然Num加的是

整數變數count,但編譯器會自動轉換成相對的偏

移位址計算。

Page 40: 07 陣列與字串

40

陣列記憶體配置簡介(5)

程式範例:scanf()函數與陣列位址的說明範例:

CH07_11.c

7-1 陣列簡介

Page 41: 07 陣列與字串

41

執行結果

程式解說

7-1 陣列簡介

第10行中使用三種方式傳入變數位址作為參數,

如此scanf()函數即可把鍵盤輸入的資料,儲存到

對應的記憶體中。

Page 42: 07 陣列與字串

42

函數與陣列元素參數

程式範例:單一陣列元素的傳值呼叫參數傳遞

說明範例:CH07_12.c

7-1 陣列簡介

Page 43: 07 陣列與字串

43

7-1 陣列簡介

Page 44: 07 陣列與字串

44

執行結果

程式解說

7-1 陣列簡介

第4行宣告函數原型,第9行則宣告整數陣列,並給定

起始值。

第13行呼叫函數show(),並將陣列元素值以傳值呼

叫方式傳遞到函數中。

第24~25行,輸出num個*號。

Page 45: 07 陣列與字串

45

程式範例:單一陣列元素的傳址呼叫參數傳遞

說明範例:CH07_13.c

7-1 陣列簡介

Page 46: 07 陣列與字串

46

7-1 陣列簡介

Page 47: 07 陣列與字串

47

執行結果

程式解說

7-1 陣列簡介

第4行是傳址呼叫的原型宣告。

第13行則以A[i]位址當參數傳遞,並與第23行的num共

用位址,在第28行中*num的值改變時,主程式中A[i]

的值也會同步改變。

Page 48: 07 陣列與字串

48

函數與一維陣列參數(1)

一維陣列參數傳遞的函數原型宣告:

一維陣列參數傳遞的函數呼叫如下所示:

一維函數的基本架構如下:

7-1 陣列簡介

(回傳資料型態or void) 函數名稱 (資料型態 陣列名稱[ ] ,…);

函數名稱 (資料型態 陣列名稱,…);

(回傳資料型態or void) 函數名稱 (資料型態 陣列名稱[ ] ,…);

{

}

Page 49: 07 陣列與字串

49

函數與一維陣列參數(2)

程式範例:一維陣列的參數傳遞與傳址呼叫範

例:CH07_14.c

7-1 陣列簡介

Page 50: 07 陣列與字串

50

7-1 陣列簡介

Page 51: 07 陣列與字串

51

執行結果

程式解說

7-1 陣列簡介

第 3行宣告Array_size為常數。

第5行中是函數的原型宣告,以arr[ ]參數及傳址呼叫傳遞,

其中在大括號[ ]中的數字可寫也可不寫,第12~13行印出

A陣列內容。

第15行直接用陣列名稱,呼叫函數Multiple2(),在第29

行會將每個元素值乘以2的陣列傳回主函數。

第17~18行中列印A陣列,元素值已改變了。

Page 52: 07 陣列與字串

52

以下是二維陣列參數傳遞的函數原型宣告:

二維陣列參數傳遞的函數呼叫如下所示:

二維函數的基本架構如下:

函數與多維陣列參數(1) 7-1 陣列簡介

(回傳資料型態or void) 函數名稱 (資料型態 陣列名稱[ ] [行數] ,…);

函數名稱 (資料型態 陣列名稱,…);

(回傳資料型態or void) 函數名稱 (資料型態 陣列名稱[ ][ ] ,…);

{

}

Page 53: 07 陣列與字串

53

函數與多維陣列參數(2)

程式範例:二維陣列的參數傳遞與傳址呼叫範

例:CH07_15.c

7-1 陣列簡介

Page 54: 07 陣列與字串

54

7-1 陣列簡介

Page 55: 07 陣列與字串

55

執行結果

程式解說

7-1 陣列簡介

第11行中第一維的大括號可以省略不用定義,其它維數

的註標都必須清楚定義長度。

第19行以傳值呼叫呼叫函數Multiple2()。

第32~38行則是定義Multiple2()函數的內容,在第32行處

特別請您注意的還是第二維大括號中必須有元素個素。

Page 56: 07 陣列與字串

56

字元陣列與字串(1)

在C中字串宣告方式有兩種:

例如以下四種宣告方式:

7-2 字元與字串處理

方式1:char 字串變數[字串長度]="初始字串";

方式2:char 字串變數[字串長度]={'字元1', '字元

2', ...... ,'字元n', '\0'};

char Str_1[6]="Hello";

char Str_2[6]={ 'H', 'e', 'l', 'l', 'o' , '\0'};

char Str_3[ ]="Hello";

char Str_4[ ]={ 'H', 'e', 'l', 'l', 'o', '!' };

Page 57: 07 陣列與字串

57

字元陣列與字串(2)

程式範例:字串的宣告與輸出範例:CH07_16.c

7-2 字元與字串處理

Page 58: 07 陣列與字串

58

執行結果

7-2 字元與字串處理

Page 59: 07 陣列與字串

59

程式解說

7-2 字元與字串處理

第6~9行宣告了四種不同的字串及字元陣列方式,第

11行中輸出佔用的空間為6位元,因為多了‘\0’字元。

而在第18行中所輸出了Str_4字元陣列,由於沒有以

'\0'字元結尾,所以輸出時會出現奇怪的符號。

Page 60: 07 陣列與字串

60

程式範例:字串複製函數的實作範例:

CH07_17.c

7-2 字元與字串處理

Page 61: 07 陣列與字串

61

7-2 字元與字串處理

Page 62: 07 陣列與字串

62

執行結果

程式解說

7-2 字元與字串處理

第5行宣告以陣列呼叫的函數原型宣告,第14行呼叫

string_copy()函數。

第24~25行中,是執行逐一拷貝陣列中字元的過程。

Page 63: 07 陣列與字串

63

gets()函數

– 原型宣告如下所示:

– 當您輸入字串時,只有按下Enter鍵時,會讀取緩衝

區的所有字元並存放到指定字元陣列中,並且在結

尾處還會加上'\0'字元。

– gets()函數中不用加上&運算子,這點和scanf()函數

不同,因為字元陣列名稱本身就可代表陣列位址。

字串輸入與輸出函數(1)7-2 字元與字串處理

gets (字元陣列名稱);

Page 64: 07 陣列與字串

64

字串輸入與輸出函數(2)

puts()函數

– puts()函數可用來輸出指定字串,只需把字串的位

址(字元陣列名稱)傳入,就可以輸出字串到螢幕上,

直到遇到'\0'字元為止,而且輸出之後還會自動換行。

– 以下程式範例是練習gets()函數與puts()函數的宣告

與應用,各位可以輸入"This is a book."字串,並比

較使用gets()函數與scanf()函數的不同。

7-2 字元與字串處理

Page 65: 07 陣列與字串

65

字串輸入與輸出函數(3)

程式範例:gets()函數與puts()函數的宣告與應

用範例:CH07_18.c

7-2 字元與字串處理

Page 66: 07 陣列與字串

66

執行結果

7-2 字元與字串處理

Page 67: 07 陣列與字串

67

程式解說

7-2 字元與字串處理

第6~7行宣告兩個字元陣列,並在第12行中使用 gets()

函數讀取“This is a book.”字串,整個字串都會被讀取。

第14行則使用scanf()函數讀取“This is a book.”字串,不

過只能讀取到“This”。

而第17行中利用puts() 函數輸出,結果會自動換行。

Page 68: 07 陣列與字串

68

字串陣列宣告方式如下:

上式中字串數是表示字串的個數,而字元數是表

示每個字串的最大自可存放字元數。

當然也可以在宣告時就設定初值,不過要記得每

個字串元素都必須包含於雙引號之內。例如:

字串陣列7-2 字元與字串處理

char 字串陣列名稱[字串數][字元數];

char 字串陣列名稱[字串數][字元數]={ "字串常數1", "

字串常數2", "字串常數3"…};

Page 69: 07 陣列與字串

69

程式範例:字串陣列的宣告與輸出範例:

CH07_19.c

7-2 字元與字串處理

Page 70: 07 陣列與字串

70

執行結果

7-2 字元與字串處理

Page 71: 07 陣列與字串

71

程式解說

7-2 字元與字串處理

第6行中宣告了一個字串陣列Name,而第14行中

直接將Name陣列以一維的方式即可輸出該字串,

不過如果要輸出第i字串的第j個字元,則必須使用

二維方式,如printf(Name[i-1][j-1])。

Page 72: 07 陣列與字串

72

程式範例:字串陣列中字串長度的計算範例:

CH07_20.c

7-2 字元與字串處理

Page 73: 07 陣列與字串

73

執行結果

7-2 字元與字串處理

Page 74: 07 陣列與字串

74

程式解說

7-2 字元與字串處理

第16~17行是以while迴圈來計算該字串的長度,並以

二維方式逐一讀出字元,當字元為‘\0’字元時則跳出迴

圈,不然就執行j++來計算長度。

第18行輸出字串及長度,這裏我們使用\t字元來控制

輸出的對齊效果。

Page 75: 07 陣列與字串

75

strlen()函數的功用是可以輸出字串str的長度,

使用方式如下:

strlen()函數(1) 7-3 字串處理函數簡介

函數原型:size_t strlen(char *str)

strlen(str);

Page 76: 07 陣列與字串

76

strlen()函數(2)

程式範例:字串反向印出範例:CH07_21.c

7-3 字串處理函數簡介

Page 77: 07 陣列與字串

77

執行結果

7-3 字串處理函數簡介

Page 78: 07 陣列與字串

78

程式解說

7-3 字串處理函數簡介

第6行宣告所輸入字串變數的長度,第10行使用gets()

函數,允許所輸入的字串中含有空白字元。

第12~13行中使用C的庫存函數strlen()來逐一反向印

出字元。

Page 79: 07 陣列與字串

79

strstr()函數的功用是搜尋str2 字串在 str1 字串

中第一次出現的位置,如果有找到則傳回該位

置的位址,沒有找到則傳回 NULL。

而strncpy()函數則是複製 str2 字串的前 n 個字

元到 str1字串。

strstr()函數與strncpy()函數(1)

7-3 字串處理函數簡介

char *strstr(char *str1, char *str2)

char *strncpy(char *d, char *s, int n)

Page 80: 07 陣列與字串

80

strstr()函數與strncpy()函數(2)

程式範例:strstr()函數與strncpy()函數的宣告

與使用範例:CH07_22.c

7-3 字串處理函數簡介

Page 81: 07 陣列與字串

81

執行結果

7-3 字串處理函數簡介

Page 82: 07 陣列與字串

82

程式解說

7-3 字串處理函數簡介

第8行宣告並設定一字串,第13~14行當使用

strstr() 函數搜尋到字串"Tom"則使用 strncpy() 函

數替換成字串"Joe"。

Page 83: 07 陣列與字串

83

strlwr()函數可將字串中的大寫字元全部轉換成

小寫,而strcat()函數則將 str2 字串連結到字串

str1使用方式如下:

strlwr()函數與strcat()函數(1)

7-3 字串處理函數簡介

char *strlwr(char *str)

char *strcat(char *str1, char *str2)

strlwr(str);

strcat(str1,str2);

Page 84: 07 陣列與字串

84

strlwr()函數與strcat()函數(2)

程式範例:strcat()函數與strlwr()函數的宣告與

使用範例:CH07_23.c

7-3 字串處理函數簡介

Page 85: 07 陣列與字串

85

執行結果

7-3 字串處理函數簡介

Page 86: 07 陣列與字串

86

程式解說

7-3 字串處理函數簡介

第12、14行以gets()函數輸入可含空白字元的字串。

第16行利用函數庫的strcat(str1,str2)函數將兩字串連結。

第17行則使用strlwr()函數將字串中的大寫字元都轉為小

寫字元。

Page 87: 07 陣列與字串

87

上機實習課程(1)

上機實習範例:CH07_24.c

– 以下程式範例是利用main()函數的命令列引數

功能,讓程式可以從命令列讀入簡單的運算式,

並利用switch指令來判斷四則運算符號及計算

出相對應的運算結果。

– 當中使用到atof()函式將字串轉換為浮點數資料

型態,可查閱附錄A的型態轉換函數。

7-4 上機實習課程

Page 88: 07 陣列與字串

88

7-4 上機實習課程

Page 89: 07 陣列與字串

89

7-4 上機實習課程

Page 90: 07 陣列與字串

90

上機實習課程(2)

執行結果

上機實習範例:CH07_25.c

– 在字串的處理中,常會需要知道字串的長度,

以下程式範例是利用while迴圈逐一讀取字元,

並計算此字串的長度。

7-4 上機實習課程

Page 91: 07 陣列與字串

91

7-4 上機實習課程

Page 92: 07 陣列與字串

92

上機實習課程(3)

執行結果

上機實習範例:CH07_26.c

– 延續以上程式,請設計一程式將字串中的大寫

字母轉為小寫,小寫字母轉為大寫。

7-4 上機實習課程

Page 93: 07 陣列與字串

93

7-4 上機實習課程

Page 94: 07 陣列與字串

94

執行結果

7-4 上機實習課程

Page 95: 07 陣列與字串

95

上機實習課程(4)

上機實習範例:CH07_27.c

– 有一個三維陣列,內容如下:

7-4 上機實習課程

int num[2][3][3]=

{{{43,45,67},

{73,71,56},

{55,38,66}},

{{21,39,25 },

{38,89,18},

{90,101,89}}};

Page 96: 07 陣列與字串

96

7-4 上機實習課程

Page 97: 07 陣列與字串

97

7-4 上機實習課程

Page 98: 07 陣列與字串

98

上機實習課程(5)

執行結果

上機實習範例:CH07_28.c

– 以下是數位新知公司三個業務代表2008年前六

個月每人的業績

7-4 上機實習課程

業務員 一月 二月 三月 四月 五月 六月

1 112 76 95 120 98 68

2 90 120 88 112 108 120

3 108 99 126 90 76 98

單位:萬元

Page 99: 07 陣列與字串

99

請設計一程式,計算以下結果:

7-4 上機實習課程

(1).每個業務代表的前半年業績總額。

(2).1~6月每個月這三個業務代表的總業績。

Page 100: 07 陣列與字串

100

7-4 上機實習課程

Page 101: 07 陣列與字串

101

執行結果

7-4 上機實習課程

Page 102: 07 陣列與字串

102

上機實習課程(6)

上機實習範例:CH07_29.c

– 氣泡法的排序原理如下:

– 由此可知n個元素的氣泡排序法必須執行n-1次掃瞄,以4個元素而言,共經過4次掃瞄。

– 第一次掃瞄需要作4次的比較;第二次掃瞄需要作3次的比較,第三次掃瞄需要作2次的比較,第四次掃瞄需要作1次比較。

7-4 上機實習課程

逐次比較2個相鄰的記錄,若大小順序有誤,則立即對

調,掃描一遍後一定有一個記錄被置於正確位置,就

彷彿氣泡逐漸由水底逐漸冒升到水面上一樣。

Page 103: 07 陣列與字串

103

7-4 上機實習課程

Page 104: 07 陣列與字串

104

7-4 上機實習課程

Page 105: 07 陣列與字串

105

執行結果

7-4 上機實習課程

Page 106: 07 陣列與字串

106

上機實習課程(7)

上機實習範例:CH07_30.c

– 以下程式範例是字串陣列的應用,用來儲存由

使用者輸入的3筆學生姓名資料及每位學生的三

科成績,請以橫列方式是輸出每位學生的姓名、

三科成績及總分。

7-4 上機實習課程

Page 107: 07 陣列與字串

107

7-4 上機實習課程

Page 108: 07 陣列與字串

108

執行結果

7-4 上機實習課程

Page 109: 07 陣列與字串

109

上機實習課程(8)

上機實習範例:CH07_31.c

– 假設一個三維陣列元素內容如下:

– 請計算原有陣列中的每個元素值總和,並將值

為負數的元素值都換為0,再輸出新陣列的所有

內容。

7-4 上機實習課程

A[4][3][3]={{{1,-2,3},{4,5,-6},{8,9,2}},

{{7,-8,9},{10,11,12},{0.8,3,2}},

{{-13,14,15},{16,17,18},{3,6,7}},

{{19,20,21},{-22,23,24},(6-,9,12)}};

Page 110: 07 陣列與字串

110

7-4 上機實習課程

Page 111: 07 陣列與字串

111

7-4 上機實習課程

Page 112: 07 陣列與字串

112

執行結果

7-4 上機實習課程

Page 113: 07 陣列與字串

113

上機實習課程(9)

上機實習範例:CH07_32.c

– 以下程式範例是利用數值陣列的特性,陣列arr

的初值是1~10的數字,介紹一個數值累加及輸

出的陣列應用實例。

7-4 上機實習課程

Page 114: 07 陣列與字串

114

執行結果

7-4 上機實習課程

Page 115: 07 陣列與字串

115

上機實習課程(10)

上機實習範例:CH07_33.c

– 以下的程式範例則是再利用二維陣列的方式來

撰寫一個求二階行列式的範例。

– 二階行列式的計算公式為:a1*b2-a2*b1

7-4 上機實習課程

Page 116: 07 陣列與字串

116

7-4 上機實習課程

Page 117: 07 陣列與字串

117

執行結果

7-4 上機實習課程

Page 118: 07 陣列與字串

118

上機實習課程(11)

上機實習範例:CH07_34.c

– 以下的程式範例將實作介紹一個讓使用者輸入

的原始字串資料反向排列輸出的設計。

7-4 上機實習課程

Page 119: 07 陣列與字串

119

執行結果

7-4 上機實習課程