程式設計 博碩文化出版發行.

Slides:



Advertisements
Similar presentations
資料坐火車 …… 談陣列 (Array) 綠園 2008/12/15. Array 的宣告 整數陣列的宣告  int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1]
Advertisements

綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
第一單元 建立java 程式.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
陣列 Array chapter 3 德明科技大學資訊科技系.
第四章 陣列、字串與排序.
陣列與字串 Java陣列特性 一維陣列 多維陣列 字串 字串的相關函數 字串緩衝器類別.
C 程式設計— 陣列 台大資訊工程學系 資訊系統訓練班.
C/C++基礎程式設計班 陣列 (Array)
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
資料結構 Data Structure.
資料結構 第2章 陣列.
第十一章 結構.
13 C++字串 字串與數值轉換函數 13.1 C++字串類別 建立C++字串 13-2
Chapter 2 陣列結構 資料結構導論 - C語言實作.
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 指定字串的初值 8-3 指標與字串 8-4 字串處理 8-5 C語言的字串函數.
列舉(enum).
【變數與記憶體位址】 變數(Variable)提供一個有名稱的記憶體儲存空間。一個變數包含資料型態、變數本身的值及它的位址值。
String C語言-字串.
保留字與識別字.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
C語言簡介 日期 : 2018/12/2.
Introduction to the C Programming Language
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
第二章 鏈結串列 2-1 線性串列 2-2 認識陣列 2-3 矩陣的簡介與運算 2-4 陣列與多項式.
Introduction to the C Programming Language
Introduction to the C Programming Language
第3章 指標與字串 (Pointers and Strings)
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
Chapter 5 複合資料型態.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
陣列(Array).
陣列
輸入&輸出 函數 P20~P21.
第十章 指標.
第九章 字串.
第7章 指標 7-1 指標的基礎 7-2 指標變數的使用 7-3 指標運算 7-4 指標與陣列 7-5 指向函數的指標.
挑戰C++程式語言 ──第8章 進一步談字元與字串
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
向量 (vector) 就是典型的一維陣列,而更高維的矩陣,例如矩陣 (matrix) 和張量 (tensor) 則分別是二維和三維的陣列。
C qsort.
Introduction to the C Programming Language
挑戰C++程式語言 ──第7章 輸入與輸出.
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
第14章 結構與其他資料形式.
陣列與結構.
10115: Automatic Editing ★★☆☆☆
第 三 章 陣 列 課程名稱:資料結構 授課老師:________ 2019/5/15.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
簡單Java介紹.
實習八 函式指標.
1757: Secret Chamber at Mount Rushmore
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
Programming & Language Telling the computer what to do
Introduction to the C Programming Language
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

程式設計 博碩文化出版發行

第六章 陣列與字串 課前指引 「線性串列」(Linear List)是數學應用在電腦科學中一種相當簡單與基本的資料結構,簡單的說,線性串列是n個元素的有限序列(n≧0),線性串列的應用在計算機科學領域中是相當廣泛的,例如C程式中的陣列或字串結構,就是一種典型線性串列的應用。

章節大綱 6-1 認識陣列 6-2 C的陣列簡介 6-3 字串進階處理簡介 備註:可依進度點選小節

6-1 認識陣列 陣列結構型態的五種屬性 起始位址: 維度(dimension): 索引上下限: 元素個數:是索引上限與索引下限的差+1。 以陣列名稱來代表陣列第一個元素所在的記憶體位址。 維度(dimension): 代表此陣列為幾維陣列 例如:一維陣列、二維陣列、三維陣列等等。 索引上下限: 指陣列中元素編號的上限與下限。 元素個數:是索引上限與索引下限的差+1。 型態:宣告此陣列的型態,它決定陣列元素在記憶體所佔有的大小。

6-1 認識陣列 陣列儲存元素的方式 以列為主(Row-major):一列一列依序儲存,例如Java、C/C++、PASCAL語言的陣列存放方式。 以行為主(Column-major)::一行一行依序儲存,例如Fortran語言的陣列存放方式。

6-2 C的陣列簡介 在C中,可以把陣列(array)看作是一群相同名稱與資料型態的集合,並且在計憶體中佔有一塊連續的記憶體空間。要存取陣列中的資料時,則配合索引值(index)尋找出資料在陣列的位置。

6-2 C的陣列簡介 一維陣列 資料型態 陣列名稱[陣列長度]; 資料型態 陣列名稱[陣列大小]={初始值1,初始值2,…}; 資料型態 陣列名稱[陣列長度]; 資料型態 陣列名稱[陣列大小]={初始值1,初始值2,…}; 在C中,陣列的索引值是從0開始,對於定義好的陣列,可以藉由索引值的指定來存取陣列中的資料。 兩個陣列間不可以直接用「=」運算子互相指定,只有陣列元素才能互相指定。

6-2 C的陣列簡介 範例CH06_01.c /* 一維陣列的使用之1 */

6-2 C的陣列簡介 執行結果 程式解說 第6行宣告整數陣列Score時,同時設定學生成績初始值。 第11行中透過for迴圈,設定i變數從0開始計算,並當作陣列的索引值,計算總分Total。 第18行輸出成績總分及平均。

6-2 C的陣列簡介 範例CH06_02.c /* 一維陣列的使用之2 */

6-2 C的陣列簡介 執行結果 程式解說 第6行宣告並設定陣列元素值,不過有些元素並未指定初值。 第9行當輸出所有元素值時,各位將發現arr[3]與arr[4]的值為0。

6-2 C的陣列簡介 範例CH06_03.c /* 一維陣列的使用之3 */

6-2 C的陣列簡介 執行結果 程式解說 第6行宣告整數陣列,不過並未同步設定初值。第8~10行設定陣列部份元素的值,但arr[3]與arr[4]並未設定初值。 第13行輸出陣列元素值時,會發現arr[3]與arr[4]顯示不可預期的值。

6-2 C的陣列簡介 範例CH06_04.c /* 一維陣列的使用之4 */

6-2 C的陣列簡介 執行結果 程式解說 第7行宣告一個整數陣列arr,並設定初始值。第17行將整數陣列arr內的值累加到變數sum中。 第18行輸出累加後的結果。

6-2 C的陣列簡介 範例CH06_05.c /* 一維陣列的使用之5 */

6-2 C的陣列簡介 執行結果 程式解說 第7行定義整數陣列 bArray。 第8行定義浮點數陣列 cArray。 在第10~14行中,各位發現陣列所佔用的空間大小與資料型態與元素個數有關。

6-2 C的陣列簡介 範例CH06_06.c /* 一維陣列的使用之6 */

6-2 C的陣列簡介 執行結果 程式解說 第13行由鍵盤輸入陣列元素值。 第14行每個元素值累加1到total。

6-2 C的陣列簡介 範例CH06_07.c /* 氣泡排序法 */

6-2 C的陣列簡介 範例CH06_07.c

6-2 C的陣列簡介 執行結果 程式解說 第7行宣告並將此數列值以一維陣列儲存。 第10~11行輸出此一維陣列的所有元素值。 第18行比較相鄰兩數,如第一數較大則交換。 第20~22行直接進行陣列中元素的移動與交換動作。

6-2 C的陣列簡介 二維陣列 資料型態 陣列名稱 [列的個數] [行的個數]; 資料型態 陣列名稱 [列的個數] [行的個數]; 二維陣列設初始值時,為了方便區隔行與列,所以除了最外層的{}外,最好以{}括住每一列的元素初始值,並以「,」區隔每個陣列元素,例如: int A[2][3]={{1,2,3},{2,3,4}};

6-2 C的陣列簡介 陣列註標的設定 C對於多維陣列註標的設定,只允許第一維可以省略不用定義,其它維數的註標都必須清楚定義長度。

6-2 C的陣列簡介 範例CH06_08.c /* 二維陣列的使用之1 */

6-2 C的陣列簡介 範例CH06_08.c

6-2 C的陣列簡介 執行結果

6-2 C的陣列簡介 程式解說 第7~9行宣告了一個二維整數陣列,用了存放3個業務員半年內每個月的業績,宣告時省略第一維的索引值不填。 第17行利用運算式sum+=sale[i][j]計算每個業務員半年的業績金額。 第26行利用sum+=sale[j][i];運算式計算每個月三個業務員的業績總金額。

6-2 C的陣列簡介 範例 CH06_09.c /* 二維陣列的使用之2 */

6-2 C的陣列簡介 執行結果 程式解說 第7~9行分別宣告三個二維陣列A、B、C,其中A、B陣列分別設定初始值。 第11~13行利用運算式C[i][j]=A[i][j]+B[i][j],計算矩陣C=矩陣A+矩陣B。 第18~19行輸出C陣列的內容。

6-2 C的陣列簡介 多維陣列 多維陣列的表示法和二維陣列一樣,皆可視為是一維陣列的延伸,在C中如果要提高陣列的維數,就是多加一組括號與索引值即可。定義語法如下所示: 以下舉出C中幾個多維陣列的宣告實例: 資料型態 陣列名稱[元素個數] [元素個數] [元素個數]……. [元素個數]; int Three_dim[2][3][4]; //三維陣列 int Four_dim[2][3][4][5]; // 四維陣列

6-2 C的陣列簡介 範例 CH06_10.c /* 三維陣列的使用之1 */

6-2 C的陣列簡介 執行結果

6-2 C的陣列簡介 程式解說 第7~14行宣告並設定一2*3*4三維陣列的值。 第18~20行分別以三層迴圈方式將第21行輸出三維陣列中的元素。 其中第18行的外層迴圈控制第一維維度,第19行的中層迴圈控制第二維維度,第20行的內層迴圈控制第三維維度。

6-2 C的陣列簡介 範例CH06_11.c /* 三維陣列的使用之2 */

6-2 C的陣列簡介 範例CH06_11.c

6-2 C的陣列簡介 執行結果

6-2 C的陣列簡介 程式解說 第8~11行宣告並設定陣列元素值。 第19行將所有元素值累加到sum變數。 第20~21行如果元素值於為負數,則資料值重新設定為零。

6-3 字串進階處理簡介 字串進階處理包括了字元陣列的介紹與各種字串處理功能,並包括C函數庫中許多實用多的字元與字串處理函數。 字串陣列

6-3 字串進階處理簡介 字串陣列 宣告方式如下: 在宣告時就設定初值,不過要記得每個字串元素都必須包含於雙引號之內,而且每個字串間要以逗號「,」分開。語法格式如下: char 字串陣列名稱[字串數][字元數]; char 字串陣列名稱[字串數][字元數]={ "字串常數1", "字串常數2", "字串常數3"…};

6-3 字串進階處理簡介 範例CH06_12.c /* 字串陣列的使用之1 */

6-3 字串進階處理簡介 執行結果 程式解說 第6~11行字串陣列的宣告與設定初值。 第15行輸出字串陣列內容,請留意在此是以一維陣列Str[i]的方式輸出。 第18行輸出第二個字串中的第一個字元,則是以二維陣列Str[1][0]方式輸出。

6-3 字串進階處理簡介 範例CH06_13.c /* 字串陣列的使用之2 */

6-3 字串進階處理簡介 範例CH06_13.c

6-3 字串進階處理簡介 執行結果 程式解說 第6行宣告儲存姓名與成績的兩個陣列。 第12行以scanf()函數來輸入每一筆姓名字串與三科成績。 第21行計算三科成績的總分。

6-3 字串進階處理簡介 範例CH06_14.c /* 字串長度之計算 */

6-3 字串進階處理簡介 執行結果 程式解說 第6行length變數用來作計算字串的長度。 第7行宣告此字串最多可儲存30個字元。 第11行以gets()函數輸入字串,第13行宣告length=0。 第14行以while迴圈,當此元素不為空字元,length變數就累加1。 第16行輸出這個字串的字元數。

6-3 字串進階處理簡介 範例CH06_15.c

6-3 字串進階處理簡介 範例CH06_15.c /* 字串之串接 */

6-3 字串進階處理簡介 執行結果 程式解說 第8行宣告連結後的新陣列,首先要注意本身宣告字串大小,如果串接後超過字串大小時,編譯器可是會自動清除後方連接的字串。 第16行把整數變數 record 歸 0,用來記錄 S3 所設定陣列元素的索引值。 第18行將 S1 字串複製到 S3,第21行將 S2 字串複製到 S3。 第24行字串最後要加上 NULL 字元。 第24行顯示字串連結的結果。

6-3 字串進階處理簡介 範例 CH06_16.c /* 字串之大小寫轉換 */

6-3 字串進階處理簡介 執行結果 程式解說 第7行宣告一字元陣列,可存放50個字元。 第14~15行利用字元的ASCII碼判斷,並將大寫字母換小寫字母。 第16~17行利用字元的ASCII碼判斷,並將小寫字母換為大寫字母。

6-3 字串進階處理簡介 範例 CH06_17.c /* strcat(), strlwr()之使用 */

6-3 字串進階處理簡介 執行結果 程式解說 第3行含括 <string.h> 標頭檔,才能使用C的字串庫存函數。 第16行利用strcat()函數則將 str2 字串連結到字串 str1。 第17行將字串內的大寫字母轉為小寫字母。

6-3 字串進階處理簡介 範例 CH06_18.c /* 反向列印字串 */

6-3 字串進階處理簡介 執行結果 程式解說 第7行宣告所輸入字串變數的最大長度。 第11行使用gets()函數,允許所輸入的字串中含有空白字元。 第13~14行中使用C的庫存函數strlen()來逐一反向印出字元。

本章結束 Q&A討論時間