第二章 陣列 (ARRAYS)
陣列(ARRAYS)的定義
陣列 (array) 是
有限個相同資料型態的元素所組成 這些元素儲存於連續的記憶體中 共用一個的陣列名稱 每一個元素經由索引 ( index,或稱註標 ) 來識別 陣列可解釋為一組索引與資料的對映。a
0 1 2 3 4甚麼情況該使用陣列?
輸入5筆資料
int a, b, c, d, e; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); scanf("%d",&d); scanf("%d",&e);
如果有100筆資料呢?如何解決?
以C語言實作一維陣列
不必製作(create),但是需先宣告,說明此陣列的元素的 資料型態與個數,以便分配足夠的記憶體。 宣告語法 資料型態 陣列名稱 [ 元素個數 ]; 範例:儲存5筆學生成績 int score[5]; score 0 1 2 3 4score[0] score[1] score[2] score[3] score[4]
存入資料 (STORE)
直接設定寫入 score[0] = 13; //設定第1筆資料 score[1] = 42; //設定第2筆資料 score[2] = 20; //設定第3筆資料 score[3] = 5; //設定第4筆資料 score[4] = 10; //設定第5筆資料 score 0 1 2 3 4score[0] score[1] score[2] score[3] score[4]
存入資料 (STORE) (續)
score 0 1 2 3 4
score[0] score[1] score[2] score[3] score[4]
13 42 20 5 10 使用 scanf() 輸入資料 scanf("%d", &score[0]); scanf("%d", &score[1]); scanf("%d", &score[2]); scanf("%d", &score[3]); scanf("%d", &score[4]); 可以改用迴圈
存入資料 (STORE) (續)
score 0 1 2 3 4
score[0] score[1] score[2] score[3] score[4]
13 42 20 5 10 運用迴圈 for(i=0;i<5;i++) scanf("%d",&score[i]); 如果有100筆資料呢?如何解決? int score[100],i; for(i=0;i<100;i++) scanf("%d",&score[i]); 是不是很方便呢?
存入資料 (STORE) (續)
陣列初值設定方法
(1) int data[5] = {0}; //所有元素值都設為0 data 0 1 2 3 4 0 0 0 0 0 num 0 1 2 1.2 2.5 3.0 s 0 1 2 3 4 1 2 3 0 0 (3) int s[5]={1,2,3}; //初值個數少於宣告元素個數時,其餘為0 (2) double num[]={1.2, 2.5, 3.0}; //設定值個數決定陣列大小取出資料 (RETRIEVE)
若要取出陣列 score 中索引值為 3 的元素資料,並
置於整數變數 y 中,C語言的實作方式為:
y = score[3];
score 0 1 2 3 4
score[0] score[1] score[2] score[3] score[4]
13 42 20 5 10
範例
輸入5筆成績,計算並輸出平均分數。
執行結果範例練習
記錄1~10號同學的成績,將不及格的同學號碼列印出來。 例如同學成績如下: 則列印: 不及格同學的號碼為:2 3 8 10 號碼 1 2 3 4 5 6 7 8 9 10 成績 80 50 55 70 60 90 75 40 85 59解題
1. 宣告陣列 int score[10]; 2. 輸入10個成績 scanf() 函數 3. 依序判斷每個成績如果小於60分,則列印此號碼 索引 0 1 2 3 4 5 6 7 8 9 整數陣列 80 50 55 70 60 90 75 40 85 59 號碼 1 2 3 4 5 6 7 8 9 10 成績 80 50 55 70 60 90 75 40 85 59 例如同學成績如下: 迴圈 if(成績 < 60) printf()函數 12字串:字元陣列
char title[10];
strcpy(title, "maneger");
char title[] = "maneger";
char title[] = {'m','a','n','e','g','e','r','\0'};
title 0 1 2 3 4 5 6 7 8 9 m a n e g e r \0 title 0 1 2 3 4 5 6 7 m a n e g e r \0 結束字元 字串用雙引號 字元用單引號