C 語言入門經典

Download Report

Transcript C 語言入門經典

|09
陣列
C 語言入門經典
9.1 陣列
|一維陣列架構
9.1.1 關於陣列
陣列是數個相同型態的資料集合
|
C 語言入門經典
使用一維陣列 >>
9.1 陣列
|使用一維陣列
9.1.1 關於陣列
• 宣告
• 陣列長度
• 索引
• 儲存元素
<< 一維陣列架構
C 語言入門經典
宣告陣列 >>
9.1 陣列
|宣告陣列
9.1.1 關於陣列
int x[6] ;
<< 使用一維陣列
C 語言入門經典
存取陣列元素 >>
9.1 陣列
|存取陣列元素
9.1.1 關於陣列
150 ;
x[3]=150
i=x[3] ;
[0]
[1]
[2]
[3]
[4]
[5]
150
2
1
<< 宣告陣列
C 語言入門經典
存取陣列元素 >>
9.1 陣列
|存取陣列元素
9.1.1 關於陣列
<< 存取陣列元素
C 語言入門經典
範例:示範陣列 >>
9.1 陣列
|範例:示範陣列
9.1.1 關於陣列
100,200,300,400,500,600
8
7
6
5
[0]
[1]
[2]
[3]
[4]
[5]
4
3
2
100
<< 存取陣列元素
200 300 400 500 600
C 語言入門經典
1
>
特定型態的陣列宣告 >>
9.1 陣列
|特定型態的陣列宣告
9.1.1 關於陣列
double ds[6] ;
• 宣告一個 double 型態的陣列 ds
• 可以儲存 6 個 double 型態的數值
<< 範例:示範陣列
C 語言入門經典
陣列索引值 >>
9.1 陣列
|陣列索引值
9.1.2 陣列的變數存取
mybArray[k]
• k 是一個 int 型態的變數。
• k 被用來做為索引值。
<< 特定型態的陣列宣告
C 語言入門經典
範例:陣列索引存取 >>
9.1 陣列
|範例:陣列索引存取
9.1.2 陣列的變數存取
3
[0]
100
<< 陣列索引值
[1]
200
4
5
[2]
300
[3]
400
[4]
500
C 語言入門經典
[5]
600
3
2
1
範例:陣列的變數設值 >>
9.1 陣列
|範例:陣列的變數設值
9.1.2 陣列的變數存取
[0]
[1]
100
200
設定第 2 個陣列元素值:200
x[0]:100,x[1]:200
<< 範例:陣列索引存取
C 語言入門經典
4
3
2
1
sizeof() >>
9.1 陣列
|sizeof()
9.1.3 陣列長度
int size = sizeof(x) ;
• x 是一個陣列。
• 變數 size 儲存
sizeof()
回傳的整數。
• 回傳值代表陣列 x 所能儲存的位元數目。
<< 範例:陣列的變數設值
C 語言入門經典
範例:陣列的大小 >>
9.1 陣列
|範例:陣列的大小
9.1.3 陣列長度
x 陣列所能儲存的位元:24
x 陣列所能儲存的 int 數量:6
3
2
1
<< sizeof()
C 語言入門經典
範例:陣列存取型態錯誤 >>
9.1 陣列
|範例:陣列存取型態錯誤
9.1.4 使用陣列的錯誤
4198928,100,456,37814176
2
1
<< 範例:陣列的大小
C 語言入門經典
索引超出範圍的錯誤 >>
9.1 陣列
|索引超出範圍的錯誤
9.1.4 使用陣列的錯誤
001
002
003
004
int x[6] ;
x[0] = 100 ;
x[1] = 2000 ;
x[6] = 3000 ;
• 索引值 0~5
• 索引值超出範圍邊界值 5 的錯誤
• #define 指令預先定義
3
2
1
<< 範例:陣列存取型態錯誤
C 語言入門經典
範例:定義陣列長度 >>
9.1 陣列
|範例:定義陣列長度
9.1.4 使用陣列的錯誤
<< 索引超出範圍的錯誤
C 語言入門經典
初始化陣列 >>
9.1 陣列
|初始化陣列
9.1.5 初始化陣列
int x[3] ={10 ,20 ,50 };
• 建立一個儲存 3 個元素的 int 型態陣列物件。
• 將 3 個整數值直接儲存至陣列。
int y[]={100,200,500} ;
•宣告的陣列會根據指定的初始化內容,自行定義。
•y 是一個長度等於 3 的陣列。
2
1
<< 範例:定義陣列長度
C 語言入門經典
範例:陣列的初始化 >>
9.1 陣列
|範例:陣列的初始化
9.1.5 初始化陣列
x:10,20,50
y:100,200,500
3
2
1
<< 初始化陣列
C 語言入門經典
範例:陣列的初始化 >>
9.1 陣列
|範例:陣列的初始化
9.1.5 初始化陣列
x:10,0,0
d:1.000000,0.000000,0.000000
y:100,200,300
warning: excess
elements in array
initializer
<< 範例:陣列的初始化
C 語言入門經典
7
6
5
4
3
2
1
陣列元素列舉 >>
9.1 陣列
|陣列元素列舉
9.1.6 陣列元素的列舉
x[4]
x[5]
x[3]
x[2]
x[1]
x[0]
3
100, 200, 300, 400, 500, 600,
2
1
<< 範例:陣列的初始化
C 語言入門經典
範例:空陣列 >>
9.1 陣列
|範例:空陣列
9.1.7 空陣列
2009198149,65536,575,
2
1
<< 陣列元素列舉
C 語言入門經典
二維陣列 >>
9.2 多維陣列
|二維陣列
9.2.1 二維陣列
int tdx[3][4] ;
<< 空陣列
C 語言入門經典
二維陣列的定義 >>
9.2 多維陣列
|二維陣列的定義
9.2.1 二維陣列
int tdx[3][6] ;
<< 二維陣列
C 語言入門經典
二維陣列的存取 >>
9.2 多維陣列
|二維陣列的存取
9.2.1 二維陣列
tdx[1][2] ;
<< 二維陣列的定義
C 語言入門經典
範例:二維陣列示範 >>
9.2 多維陣列
|範例:二維陣列示範
9.2.1 二維陣列
學生A:英文(80),數學(80),國文(77),自然(100)
學生B:英文(60),數學(88),國文(75),自然(70)
學生C:英文(75),數學(40),國文(95),自然(80)
3
<< 二維陣列的存取
C 語言入門經典
2
1
範例:透過巢狀迴圈存取二維陣列 >>
9.2 多維陣列
|範例:透過巢狀迴圈存取二維陣列
9.2.2 利用巢狀式迴圈列舉二維陣列
6
學生 A(英文,數學,國文,自然): 80,80,77,100,
學生 B(英文,數學,國文,自然): 60,88,75,70,
學生 C(英文,數學,國文,自然): 75,40,95,80,
5
4
3
2
1
<< 範例:二維陣列示範
C 語言入門經典
範例:二維陣列初始化 >>
9.2 多維陣列
|範例:二維陣列初始化
9.2.3 二維陣列的初始化
100,200,300
123,456,789
<< 範例:透過巢狀迴圈存取二維陣列
C 語言入門經典
三維陣列結構 >>
9.2 多維陣列
|三維陣列結構
9.2.3 三維陣列
xtd[1][2][4]
<< 範例:二維陣列初始化
C 語言入門經典
陣列參數語法 >>
9.3 陣列與函數參數的傳址呼叫
|陣列參數語法
void dosome(xtype xarr[]) ;
void dosome(xtype xarr[])
{
}
<< 三維陣列結構
C 語言入門經典
範例:函數的陣列引數 >>
9.3 陣列與函數參數的傳址呼叫
|範例:函數的陣列引數
X[6]
xarray[] 參數內容:
100,200,300,400,500,600,
5
4
3
2
1
<< 陣列參數語法
C 語言入門經典
陣列:函數的陣列傳址呼叫 >>
9.3 陣列與函數參數的傳址呼叫
|陣列:函數的陣列傳址呼叫
X[6]
999
9
x[] 陣列元素:100,200,300,400,500,600,
呼叫 setArray() ...
x[] 陣列元素:100,200,300,999,500,600,
<< 範例:函數的陣列引數
C 語言入門經典
4
8
3
7
2
6
1
5
字串語法 >>
9.4 字串資料
|字串語法
9.4.1 關於字串
char c[]="Good" ;
• c 陣列將會儲存 Good 字串
• 輸出字串必須指定 %s 格式碼
<< 範例:函數的陣列傳址呼叫
C 語言入門經典
範例:字串與字元 >>
9.4 字串資料
|範例:字串與字元
9.4.1 關於字串
Good Night and Good Luck
<< 字串語法
C 語言入門經典
指定字串長度 >>
9.4 字串資料
|指定字串長度
9.4.2 宣告固定長度字元陣列
char c[10]="GoodNight" ;
<< 範例:字串與字元
C 語言入門經典
範例:固定字元陣列字串 >>
9.4 字串資料
|範例:固定字元陣列字串
9.4.2 宣告固定長度字元陣列
4
3
c1:ABCDEFG
c2:ABCDEFG l @ \ @ E轀w
<< 指定字串長度
C 語言入門經典
2
1
字串與字元 >>
9.4 字串資料
|字串與字元
9.4.3 字串與字元
char c1[7]={'T','A','I','W','A','N','\0'} ;
001 char c4[7] ;
002 c4[0] = 'T' ;
003 …
<< 範例:固定字元陣列字串
C 語言入門經典
範例:字元陣列與字串 >>
9.4 字串資料
|範例:字元陣列與字串
9.4.3 字串與字元
c1:TAIWAN
c2:TAIWAN
c3:TAIWAN髯
c4:TAIWAN
<< 字串與字元
C 語言入門經典
蒔篤TAIWAN
gets() 與 puts() 函數 >>
9.4 字串資料
|gets() 與 puts() 函數
9.4.3 字串與字元
gets(c) ;
• 與 scanf() 類似,讀取使用者輸入的字串。
• c 是一個特定長度的字元陣列變數用以承接使用
者輸入的字串。
puts(c) ;
pubs("Hello World")
• 提供輸出字串的功能。
<< 範例:字元陣列與字串
C 語言入門經典
範例:字串存取 >>
9.4 字串資料
|範例:字串存取
9.4.4 gets() 與 puts()
WELCOME C
WELCOME C
Hello C
4
3
2
1
<< gets() 與 puts() 函數
C 語言入門經典
範例:scanf() 的空白字串讀取 >>
9.4 字串資料
|範例:scanf() 的空白字串讀取
9.4.4 gets() 與 puts()
Welcome C
Welcome
2
1
<< 範例:字串存取
C 語言入門經典
字串二維陣列 >>
9.5 字串陣列
|字串二維陣列
char sa[4][10] = {"AAA","BBB","CCC","DDD"} ;
• sa 是 4x10 的二維陣列。
• 第 1 個數值 4 儲存的串數目。
• 第2 個數值 10 儲存字串的長度。
<< 範例:scanf() 的空白字串讀取
C 語言入門經典
範例:字串存取 >>
9.4 字串資料
|範例:字串存取
9.4.3 gets() 與 puts()
<< 字串二維陣列
C 語言入門經典
strlen() 函數 >>
9.6 字串函數
|strlen() 函數
9.6.1 取得字串長度
size_t strlen(const char *s)
• s 為測試長度的字串,而回傳值代表字串的長度。
• size_t 型態的數值,是一個無號的整數。
<< 範例:字串存取
C 語言入門經典
範例:取得字串長度 >>
9.6 字串函數
|範例:取得字串長度
9.6.1 取得字串長度
字串長度:13
2
1
<< strlen() 函數
C 語言入門經典
大小寫轉換函數 >>
9.6 字串函數
|大小寫轉換函數
9.6.2 轉換大小寫
char *strlwr(char *str) ;
char *strupr(char *str) ;
• strlwr() 將參數 str 的組成字元全部轉換成
為小寫。
• strupr() 則將參數 str 的組成字元全部轉
換成為大寫。
<< 範例:取得字串長度
C 語言入門經典
範例:轉換字串大小寫 >>
9.6 字串函數
|範例:轉換字串大小寫
9.6.2 轉換大小寫
大寫:HELLO WORLD !
小寫:hello world !
<< 大小寫轉換函數
C 語言入門經典
3
2
1
搜尋字串函數 – strcspn >>
9.6 字串函數
|搜尋字串函數 - strcspn
9.6.3 搜尋子字串
size_t strcspn(
const char *s1, const char *s2);
• s1 為所要搜尋的主字串。
• s2 為搜尋條件。
• 回傳的結果值表示 s2 中任何一個字元第一次出
現在 s1 字串中的索引位置。
<< 範例:轉換字串大小寫
C 語言入門經典
範例:搜尋字元 >>
9.6 字串函數
|範例:搜尋字元
9.6.3 搜尋子字串
4
出現 HELLO 任一字元的第一個索引位置:4
3
2
1
<< 搜尋字串函數 - strcspn
C 語言入門經典
範例:字串存取 >>
9.6 字串函數
|範例:字串存取
9.6.4 複製與串字串
char *strcpy(char *s1,const char *s2);
• 字串常值 s2 的內容,複製到 s1 ,並且回傳 s1 的內容
char *strcat(char *s1,const char *s2);
• s1 與 s2 是兩個要合併的字串。
• s2 的值被合併至 s1 ,最後回傳合併後的字串。
<< 範例:搜尋字元
C 語言入門經典
範例:字串存取 >>
9.6 字串函數
|範例:字串存取
9.6.4 複製與串字串
7
6
5
4
3
2
1
原始字串:ABCDEFGH
複製字串:ABCDEFGH
回傳字串:ABCDEFGH
<< 範例:字串存取
C 語言入門經典
範例:字串存取 >>
9.6 字串函數
|範例:字串存取
9.6.4 複製與串字串
6
5
<< 範例:字串存取
原始字串:ABCDEFGH
輸入欲合併字串:XYZ
合併結果:ABCDEFGHXYZ
4
C 語言入門經典
|
3
2
1