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

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]
第一單元 建立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
程序设计II 第三讲 字符串处理.
String C語言-字串.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
Introduction to the C Programming Language
Introduction to the C Programming Language
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
C語言簡介 日期 : 2018/12/2.
Object-Oriented Programming in C++ 第一章 C++的初步知识
程式撰寫流程.
计算机网络讲义 第5章 批量数据处理—数组 一维数组 排序和查找 二维数组 字符串.
C++程序设计 string(字符串类) vector(容器类).
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++程式語言 ──第8章 進一步談字元與字串
函式庫補充資料.
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
物件導向程式設計 CH2.
認識常數與變數 學習C++所提供的各種基本資料型態 瞭解溢位的發生 學習認識資料型態之間的轉換
字符串 (String) 字符串是 n (  0 ) 个字符的有限序列, 记作 S = “c1c2c3…cn” 其中,S 是串名字
C qsort.
C程序设计.
C++程式設計入門 變數與運算子 作者:黃建庭.
Introduction to the C Programming Language
挑戰C++程式語言 ──第7章 輸入與輸出.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
陣列與結構.
第 3 章 类的基础部分 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
字 串 9 子曰:「質勝文則野,文勝質則史。 文質彬彬,然後君子。」 《論語﹒雍也第六》
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
變數與資料型態  綠園.
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
Programming & Language Telling the computer what to do
字串 第10章 part I 8/30/2019.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
變數與資料型態  綠園.
Array(陣列) Anny
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
InputStreamReader Console Scanner
Presentation transcript:

綠園 2012/11/06

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 的大小 陣列元素的個數寫在中括號之內,傳統的陣列長度不能 為變數,必須是確定不變的數。 【例一】 const int SIZE = 10; int foo[SIZE]; 【例二】 #define MAX 50; int main() { char data[MAX]; ……… 【例三】 int i; cin >> i; int bar[i]; // 錯誤

兩陣列的指定 int i, foo[100], bar[100]; for(i=0; i<100; i++) foo[i]=i+1; // 正確 for(i=0; i<100; i++) bar[i]=foo[i]; // 錯誤 bar = foo;

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, 52, 19 中的最 大值 (max) 與最小值 (min) 。 Hint: (1) 先開一陣列,將這些數值存下。 (2) 最大值: max ,最小值: min 。 (3) 用重覆結構 (for 迴圈 或 while 迴圈)一一比對。 (4) 印出 max 和 min 。

【隨堂練習】試設計一程式,將字串陣列中的所有 小寫字母轉換成大寫字母。 #define MAX 50 int main() { 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; }

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; }

二維陣列 宣告:資料型態 陣列名稱 [ 列的個數 ][ 行的個數 ] 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] 第一維 第二維 第三維 第一維 第二維 第三維

綠園 2012/11/06

字串的輸入與輸出 使用 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 需加上標頭檔 #include

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

C++ 的字串 C++ 的 string 不同於 int 和 float 等資料型態, std::string 未內建於核心語言中,需從 C++ 程式 庫引入,亦即使用前須先加上標頭檔 #include string first_name; string last_name; string full_name;

字串的讀取 string name; // 讀取空白之前之字串 cin >> name; // 讀取換行之前之整行字串 getline(cin, name);

字串相加 int main() { string first_name; string last_name; string full_name; cin >> first_name; cin >> last_name; full_name = first_name + “ ” + last_name; cout << “Your name is ” << full_name << endl; return 0; }

String 的成員函數 ( 一 ) int main() { string first_name, last_name, full_name; char first_ch, last_ch; int name_length; cin >> first_name; cin >> last_name; full_name = first_name + “ ” + last_name; first_ch = first_name.at(0); name_length = full_name.length(); last_ch = full_name.at(name_length - 1); cout << first_ch << “ ” << last_ch << endl; return 0; }

String 的成員函數 ( 二 ) 可以利用 substr 成員函數截取部分字串 string.substr(first, last) // main_string = “This is a test”; substring = main_string.substr(5,6); 其結果將印出 is 若省略 last , substr 將傳回 first 之後的字串。

【作業練習】 一. 修改前面投影片範例,先亂數產生十個整數,再利 用泡泡排序法依小到大排序。 二. 利用二維陣列方式來計算巴斯卡三角形的值。 p[i][j] = p[i][j] = 1, 當 i=j 或 j=0 時 p[i-1][j-1] + p[i-1][j]