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

Slides:



Advertisements
Similar presentations
綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
Advertisements

綠園 2012/11/06. Array 的宣告 整數陣列的宣告 int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2]
第一單元 建立java 程式.
第4章 VB.NET程式與 網頁製作的應用 主講人: 姚奉緒 M
电子成绩单项目实现.
陣列與字串 Java陣列特性 一維陣列 多維陣列 字串 字串的相關函數 字串緩衝器類別.
File Access 井民全製作.
第六讲 指针与字符串 —— 为什么指针 —— 持久动态内存分配 —— 字符串(字符数组).
第六章 数 组 主讲教师 贾月乐 联系电话:
13 C++字串 字串與數值轉換函數 13.1 C++字串類別 建立C++字串 13-2
Visual C++ introduction
資料大樓 --談指標與陣列 綠園.
函數(一) 自訂函數、遞迴函數 綠園.
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
String C語言-字串.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
Introduction to the C Programming Language
Introduction to the C Programming Language
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C語言簡介 日期 : 2018/12/2.
Object-Oriented Programming in C++ 第一章 C++的初步知识
程式撰寫流程.
计算机网络讲义 第5章 批量数据处理—数组 一维数组 排序和查找 二维数组 字符串.
C语言 程序设计基础与试验 刘新国、2012年秋.
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
Java 程式設計 講師:FrankLin.
C++语言程序设计 第二章 C++简单程序设计.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
陣列(Array).
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
C++大学基础教程 第5章 数组 北京科技大学 信息基础科学系.
輸入&輸出 函數 P20~P21.
第九章 字串.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
程式設計 博碩文化出版發行.
挑戰C++程式語言 ──第8章 進一步談字元與字串
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
物件導向程式設計 CH2.
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
第11章 從C到C++語言 11-1 C++語言的基礎 11-2 C++語言的資料型態與運算子 11-3 C++語言的輸出與輸入
C qsort.
C程序设计.
Introduction to the C Programming Language
挑戰C++程式語言 ──第7章 輸入與輸出.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第 3 章 类的基础部分 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
挑戰C++程式語言 ──第9章 函數.
字 串 9 子曰:「質勝文則野,文勝質則史。 文質彬彬,然後君子。」 《論語﹒雍也第六》
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
變數與資料型態  綠園.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
變數與資料型態  綠園.
Array(陣列) Anny
資料!你家住哪裏? --談指標 綠園.
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
方法(Method) 函數.
InputStreamReader Console Scanner
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

資料坐火車 …… 談陣列 (Array) 綠園 2008/12/15

Array 的宣告 整數陣列的宣告  int student[5]; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student ,沒有預設值,則為系統殘值。 student student[0] student[1] student[4] student[2] student[3]

Array 的宣告 整數陣列的宣告  int student[5]={0}; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student, 且裏面的值皆預設為 0 。 student student[0] student[1] student[4] student[2] student[3]

Array 的宣告 整數陣列的宣告  int student[5]={1, 3, 4, 6, 7}; 意義:宣告了 5 個 int 大小的連續空間,名稱 為 student, 其預設值如下: student student[0] student[1] student[4] student[2] student[3]

Array 的宣告 浮點數陣列的宣告  float num[4]={1.2, 3.2, 4.5}; 意義:宣告了 4 個 float 大小的連續空間,名稱 為 num , 其預設值如下: num num[0]num[1]num[2]num[3] 0

Array 的宣告 字元陣列的宣告 — 常用來儲存字串  char name[10]= “John” ; (雙引號) 意義:宣告了 10 個 char 大小的連續空間,名稱 為 name, 其預設值如下:  char name[10]={ ‘J’,‘o’,‘h’,‘n’ }; (單引號) 意義:宣告了 10 個 char 大小的連續空間,名稱 為 name, 其預設值如下 J name name[0] ohn name[1]name[2]name[9]name[8] \0 J name name[0] ohn name[1]name[2]name[9]name[8]

Array 的宣告 字串陣列的宣告 — 常用來儲存字串  char name[3][10] = { “ John1 ”, “ John2 ”, “ John3 ” }  意義:宣告了 3 組 10 個 char 大小的連續空間,名稱 為 name, 其預設值如下: name[0] John1 John2 John3 name[1] name[2] \0

Array 的運用-- Fibonacci #include #include using namespace std; int main() { int f[10]; int i; f[0]=1; f[1]=1; for(i=2; i<10; i++) { f[i] = f[i-1] + f[i-2]; } system(“PAUSE”); return 0; }

Array 的運用-- 找最大值與最小值 請編寫一程式,找出 33, 75, 69, 41, 32, 19 中的最 大值 (max) 與最小值 (min) 。 Hint: (1) 先開一陣列,將這些數值存下。 (2) 最大值: max ,最小值: min 。 (3) 用重覆結構 (for 迴圈 或 while 迴圈)一一比對。 (4) 印出 max 和 min 。

練習:試設計一程式,將字串陣列中的所有小寫 字母轉換成大寫字母。 #define MAX 50 int main(void) { char data[MAX]; cout << "Input a string:" ; /* 輸入字串 */ cin.getline(data, MAX); /* 小寫轉換成大寫 */ …… cout <<"\n** After translation **\n"; cout << data << endl; /* 印出陣列的內容 */ system("PAUSE"); return 0; }

Array 的運用 - 泡泡排序法 (Bubble Sort) int main() {int list[5]={3, 5, 2, 4, 1}; int i, j, tmp; for(i=4; i>0; i--) for(j=0; j<i; j++) if(list[j] > list[j+1]) // 比較 { tmp=list[j]; // 交換 list[j] = list[j+1]; list[j+1] = tmp; } for(i=0; i<5; i++) // 印出結果 cout << list[i]; system("PAUSE"); return 0; }

函數間傳遞一維陣列 函數的宣告 void show(int array[]); 函數的呼叫 int arr[5]={1,2,3,4,5}; show(arr); 函數的定義 void show(int array[]) { int i; for(i=0;i<5;i++) cout << array[i] << endl; } 當傳遞的引數是陣列時,傳遞到函數中的是該陣列實際的 位址,而不是另外複製一份陣列。

隨堂練習 --- 泡泡排序法 (Bubble Sort) int main() {int data[5]; ………// 亂數產生 5 個整數,並儲存在 data 內 cout << “ 排序前 ……\n”; show(data); bobble(data); cout << “ 排序後 ……\n”; show(data); return 0; } void show(int a[])// 試完成之。 void bobble(int a[])// 試完成之。

二維陣列 宣告:資料型態 陣列名稱 [ 列的個數 ][ 行的個數 ] int sale[2][4]={{30,35,26,32}, {33,34,30,29}}; [0][0] 30 [0][1] 35 [0][2] 26 [0][3] 32 [1][0] 33 [1][1] 34 [1][2] 30 [1][3] sale 【行】【行】 【列】【列】 sale[0] sale[1]

二維陣列 — 印出陣列中的資料 int main(void) { int i,j,sum=0; int sale[2][4]={{30,35,26,32},{33,34,30,29}}; for(i=0;i<2;i++) { cout << “ 業務員 ” << (i+1) << “ 的業績分別為: ”; for(j=0;j<4;j++) { cout << sale[i][j] << “ ”; sum+=sale[i][j]; } cout << endl; } cout <<endl <<“ 本年度總銷售量為 ” <<sum <<“ 輛車 ” <<endl; system(“pause”); return 0; }

二維陣列 — 印出陣列中的資料 int main(void) { int i,j,sum=0; int sale[2][4]={{30,35,26,32},{33,34,30,29}}; for(i=0;i<2;i++) { cout << “ 業務員 ” << (i+1) << “ 的業績分別為: ”; for(j=0;j<4;j++) { cout << sale[i][j] << “ ”; sum+=sale[i][j]; } cout << endl; } cout <<endl <<“ 本年度總銷售量為 ” <<sum <<“ 輛車 ” <<endl; system(“pause”); return 0; }

二維陣列 C++ 允許二維以上的多維陣列不必定義陣列 的長度,但是只有最左邊 ( 第一個 ) 的註標 可以省略不定義外,其它的註標都必須定 義其長度。如: int temp[][4]={{30,35,26,32}, {33,34,30,29}, {25,33,29,25}};

多維陣列 int a[2][4][3]; a[0][0][0]a[0][0][1]a[0][0][2] a[0][1][0]a[0][1][1]a[0][1][2] a[0][2][0]a[0][2][1]a[0][2][2] a[0][3][0]a[0][3][1]a[0][3][2] 第一維 第二維 第三維 第一維 第二維 第三維

函數間傳遞多維陣列 函數的宣告 void show(int array[2][4]); 函數的呼叫 int arr[2][4]={{1,2,3,4},{5,6,7,8}}; show(arr); 函數的定義 void show(int array[2][4]) { int i,j; for(i=0;i<2;i++) { for(j=0;j<4;j++) cout << array[i][j] << “ ”; } cout << endl; } 當傳遞的引數是多維陣列時,只有陣列名稱後面的第一個註標可以不 填入元素個數,其餘均須填入數值。

隨堂練習 自我評量第 7 題、第 8 題。

字串的輸入與輸出 使用 cin char str[20]; cin >> str; 字串中不可包含空白字元。 使用 cin.getline( 字串名稱, 最大長度, 字串結束字元 ) ; char str[15]; cin.getline(str,15); 字串結束字元預設為 ‘\n’ ,若不需更改則不必指出該結束字元。 字串中可包含空白字元。 使用 cin.get( 字元變數名稱); char ch; cin.get(ch); 在輸入單一字元的情況下使用。

字串陣列元素的引用及存取 int main(void) { int i; char name[3][15]; for(i=0;i<3;i++) // 輸入字串 { cout << “Input student” << i << “\’s name:”; cin.getline(name[i],15); } for(i=0;i<3;i++) // 輸出字串 cout << “name[” << i << “]=” << name[i] << endl; cout << endl; for(i=0;i<3;i++) // 輸出字串位址 { cout << “addr of name[” << i << “]=” << &name[i] << endl; cout << “addr of name[” << i << “][0]=”; cout << (name+i) << endl << endl; } system(“pause”); return 0; }

字串陣列的複製 int main(void) { int i,j; char name[3][15]={“David”, “Jane Wang”, “Tom Lee”}; char copystr[3][15]; for(i=0;i<3;i++) { for(j=0;j<15;j++) if(name[i][j] == ‘\0’ break; else copystr[i][j] = name[i][j]; copystr[i][j]=‘\0’; } for(i=0;i<3;i++) cout << “copystr[” << i << “]=” << copystr[i] << endl; system(“pause”); return 0; }

字串陣列的複製 int main(void) { int i,j; char name[3][15]={“David”, “Jane Wang”, “Tom Lee”}; char copystr[3][15]; for(i=0;i<3;i++) // 複製字串陣列 { for(j=0;j<15;j++) if(name[i][j] == ‘\0’) // 判斷是否為字串結束字元 break; else copystr[i][j] = name[i][j]; copystr[i][j]=‘\0’; } for(i=0;i<3;i++) // 輸出字串陣列 cout << “copystr[” << i << “]=” << copystr[i] << endl; system(“pause”); return 0; }

常用字串處理函數 strlen 字串長度 strlen(string); // 計算 string 字串的長度 strcat 字串連結 strcat(dest,source); // 將 dest 字串加上 source 字串後存回 dest 。 strcpy 字串拷貝 strcpy(dest, source); // 將 source 字串拷貝至 dest strlwr 將字串中的大寫字母轉換小寫 strupr 將字串中的小寫字母轉換大寫 strcmp 字元比較 strcmp(str1, str2); // 根據 ASCII 值的大小比較 str1, str2 ,傳回值分為 // 小於 0 : str1 < str2 // 等於 0 : str1 = str2 // 大於 0 : str1 > str2

常用字元處理函數 isalpha 是否為英文字母 isalpha(ch); // 結果為0表示為數字 // 結果為1表示為大寫英文字母 // 結果為2表示為小寫英文字母 isupper 是否為大寫英文字母 isupper(ch); islower 是否為小寫英文字母 islower(ch); toupper 轉換為大寫英文字母 toupper(ch); tolower 轉換為小寫英文字母 tolower(ch);