Microsoft PowerPoint - 08_陣列與函式.pptx

Similar documents
Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Microsoft PowerPoint - Class2.pptx

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - C_Structure.ppt

C/C++ - 函数

新版 明解C++入門編

Microsoft PowerPoint - Class4.pptx

C/C++基礎程式設計班

C 語言—陣列及字串

Strings

Microsoft Word - AEL 序.doc

C/C++基礎程式設計班

新版 明解C言語入門編

105A 資管一程式設計實驗 06 函式定義謝明哲老師 2 程式設計實驗 6.3: 自行定義一個可以接受兩個整數並傳回其最大公因數的函式, 接著利用該函式自 行定義一個可以接受兩個整數並傳回其最小公倍數函式 // gcd_fcn.cpp int gcd(int m,

新・明解C言語入門編『索引』

C/C++程序设计 - 字符串与格式化输入/输出

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

!249 第 八講 進階指標 講師 : 李根逸 (Ken-Yi Lee),

資料結構之C語言重點複習

Microsoft PowerPoint - STU_C_Lang_CH13.ppt

C/C++基礎程式設計班

Microsoft Word - CH09

CHAPTER VC#

Microsoft PowerPoint - ch09_AEL0080.ppt

CC213

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

Microsoft PowerPoint - 02_運算.pptx

Microsoft PowerPoint - CH07 Arrays and Vectors [相容模式]

字元意義備註 \n 換行字元 \t Tab \r 迴車鍵 Windows 系統中以 \r\n 代表換行 \ 單引號 \" 雙引號 \0 空字元 用來代表字串的結束 \\ 倒斜線 倒斜線被用做跳脫字元, 因此要用兩個倒斜線表示 表 3.2: 常用特殊字元 ( 二 ) 常用技巧 : 字元判斷在 ASCI

!194 課程 大綱 陣列介紹 [P.195] 陣列的使 用 [1] - 多個同型變數 [P.196] 陣列的初始化 [P.198] 陣列的使 用 [2] - 循序存取 [P.199] 陣列的使 用 [3] - 隨機存取 [P.200] 陣列的複製 [P.203] 在函式間傳送陣列 [P.204]

Microsoft PowerPoint - 13_指標、資料傳遞2.pptx


Microsoft PowerPoint - CH02 Introduction to C++ Programming_輸入與輸出 [相容模式]

C/C++语言 - C/C++数据

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

01.dvi

新・解きながら学ぶC言語

untitled

第二章 簡介類別

第二章 簡介類別

<4D F736F F F696E74202D FB5F8B3A5A142B8EAAEC6B6C7BBBCA142BB50C0C9AED7BEDEA7402E >

Microsoft Word - ACL chapter02-5ed.docx

踏出C++的第一步

Microsoft PowerPoint - Bronson-v3-ch07.ppt [相容模式]

Microsoft PowerPoint - vb_net8

目 錄 摘 要... 1 壹 研 究 動 機... 1 貳 研 究 目 的... 1 參 文 獻 探 討... 1 肆 研 究 設 備 及 材 料... 2 伍 研 究 過 程 及 方 法... 2 陸 研 究 結 果... 6 柒 討 論 捌 結 論 玖 參 考 資 料 及

, 即 使 是 在 昏 暗 的 灯 光 下, 她 仍 然 可 以 那 么 耀 眼 我 没 有 地 方 去, 你 会 带 着 我 么 杜 晗 像 是 在 嘲 笑 一 般, 嘴 角 的 一 抹 冷 笑 有 着 不 适 合 这 个 年 龄 的 冷 酷 和 无 情, 看 着 江 华 的 眼 神 毫 无 温

第3章.doc

105Tr_CIS1

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

Microsoft PowerPoint - VB3

Microsoft PowerPoint - chap10.ppt

本章內容 2-1 陣列及陣列位址的計算一維陣列位址計算多維陣列位址計算 2-2 一維陣列的基本運算讀取 寫入 複製 輸出 插入資料 刪除 2-3 二維陣列及矩陣的儲存與運算矩陣輸出 矩陣轉置 矩陣相加 矩陣相乘 2-4 字串 ( 字元陣列 ) 計算字串長度 字串複製 字串比較 子字串擷取 2

Microsoft Word C-A卷.docx

Microsoft Word - ACG chapter00c-3ed.docx

c_cpp

2 坐 标 表 示 2 % 第 一 种 方 式 \tikz \draw (0,0) -- (1,1); % 第 二 种 方 式 \tikz{\draw (0,0) -- (1,1); \draw (0,1) -- (1,0);} % 第 三 种 方 式 \draw (0,0) -- (1,1); \

《计算概论》课程 第十九讲 C 程序设计语言应用

untitled

Ch7_小組研討問題

Excel VBA Excel Visual Basic for Application

投稿類別:資訊類

Microsoft Word - 投影片ch03

Microsoft PowerPoint - ASP_NET_03

第 15 章遞迴呼叫 本章學習目標 說明遞迴函式呼叫概念 透過範例介紹遞迴函式呼叫與應用 本章重點概述 本章主要介紹如何使用遞迴函式呼叫進行計算 1

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

書本介紹


000

Microsoft PowerPoint - 04-array_pointer.ppt

CC213

Microsoft Word - part doc

!153 第五講 函式 講師 : 李根逸 (Ken-Yi Lee),

Microsoft PowerPoint - 06_迴圈2.pptx

Microsoft Word 養生與保健_中山大學_講義


萬里社區老人健康照護手冊

Microsoft Word - 強制汽車責任保險承保及理賠作業處理辦法 doc

Microsoft Word - 06.Understanding of Pregnancy and Birth.doc

(➂)11. 炎 炎 夏 日, 即 使 下 起 滂 沱 大 雨, 都 消 除 不 了 令 人 心 煩 的 暑 氣 這 句 話 主 要 想 表 達 什 麼? ➀ 夏 日 裡 經 常 下 著 滂 沱 大 雨, 令 人 心 煩 ➁ 下 著 滂 沱 大 雨 的 日 子, 可 以 消 除 暑 氣 ➂ 夏 日

範本檔

Transcription:

1 2 Outline 二維與多維陣列 Lecture 08 多維陣列函式 標準函式庫 函式簡介 一維陣列 二維陣列與多維陣列 陣列為多個同一型態變數之組合 int a[10]; 可存放 10 個整數資料的陣列, 可視為 10 個變數排成一個隊伍, 並給每一個變數一個編號, 自 0 號開始 至 9 號為止 a[0], a[1], a[2], a[],, a[9] 5 6 二維陣列的宣告 陣列為多個同一型態變數之組合 int A[][10]; 可存放 0 個整數資料的二維陣列, 可視為 0 個變數排成 個隊伍 ( 列 ), 並給每一個變數兩個編號, 一個編號指定在第幾個隊伍 另一個編號指定在隊伍內的順序 A[0][0], A[0][1], A[0][2], A[0][9], A[1][0], A[1][1], 二維陣列 (Array) 的使用 int cars[][6]; 宣告一整數陣列, 可存放 列 6 行共 18 個整數型別的資料 使用 cars[0][1] = ; 將 存入 cars 陣列中的第 0 列第 1 行的元素 cars[2][0]++; 將 cars 陣列中的第 2 列第 0 行的元素增加 1 cars[1][0]=cars[1][1]+a; 將 cars 陣列中的第 1 列第 1 行的值取出, 與變數 a 作加法運算後, 將結果存入第 1 列第 0 行的元素 為什麼有二維陣列或多維陣列? 對某些運算來說很自然 (e.g. 行列式 矩陣 ) 1

7 8 8-1.cpp int a[][5]; for(int i=0;i<;i++) { for(int j=0;j<5;j++) { a[i][j] = i*10 + j; 0 1 2 10 11 12 1 1 20 21 22 2 2 二維陣列的初始化 int a[][] = {{1,2,,, {5,6,7,8, {9,10,11,12; 陣列元素排列方式 各陣列元素之初始值 for(int i=0;i<;i++) { for(int j=0;j<5;j++) { cout << a[i][j] << " "; cout << "\n"; 9 10 請想想以下陣列初始化後之內容為? int a[][] = {1,2,,; int a[][] = {{1,2,,, {8, 1, {, 2; int a[][] = {{0,{1,2,,,{5,1,2,; int a[][] = {1,2,,,5,6,7,8; int a[][] = {{1, 2, {,, 5; 1 2 1 2 8 1 0 0 2 0 0 1 2 5 1 2 1 2 5 6 7 8 1 2 0 0 5 0 在陣列有給初始值時, 且陣列大小被省略時, 編譯器會根據初始值的個數來決定陣列大小 但是只有第一個維度可以省略! double A[][], b[], c[][10][0]; 矩陣向量相乘 1 2 1221 1 0 1 0 1 0 1 2 0 1 2 1 0 12 210211 0 1 0 11 010211 c a b c1 ai 1b1ai2b2 aib aib i ij j j1 11 12 8-2.cpp int a[][] = { {1,2,,, {1,0,1,0, {2,1,0,1, {0,1,0,1 ; int b[] = {,,2,1, c[]={0; 1 2 1 0 1 0 2 1 0 12 0 1 0 11 8-2.cpp for(int i=0;i<;i++) { for(int j=0;j<;j++) { c[i] += a[i][j] * b[j]; for(int i=0;i<;i++) { cout << c[i] << " "; c a b c1 ai 1b1ai2b2 aib aib i ij j j1 2

1 1 多維陣列 二維以上陣列 ( 稱為多維陣列 ) 在實務上應用比較少 宣告 int a[10][5][]; 宣告一三維陣列, 第一維度有 10 個 第二維度 5 個 第三維度 個 共可儲存 150 個不同的整數值 可想成我們宣告了 10 個不同的 5 列 行之二維陣列 float q[100][200][10][5]; 宣告一個四維陣列, 共可儲存 100 x 200 x 10 x 5 個不同的浮點數 可想成我們宣告了一個 100 列 200 行之二維陣列, 而此二維陣列中每個元素又是一個 10 列 5 行之二維陣列 C- 字串陣列 / 字元的二維陣列 15 16 回顧 字串 = 字元的一維陣列 char a[10] = "ABCDEFGHI"; cin 可以從鍵盤讀取字串 char a[10]; cin >> a; cout 可以將 C 字串輸出 char a[]="hello"; cout << a; 8-.cpp char msg[200] = "This is a test."; cout << msg; cout << "\n 請輸入一串字 : "; cin >> msg; cout << msg; This is a test. 請輸入一串字 : Hello Kitty Hello cin 利用空白或是換行符號來分隔不同資料, 所以只能藉此得到不含空白的字串 17 18 二維字元陣列 / 字串陣列 char a[][6] = {{"Pig", {"Tiger", {"Dog"; char a[][6] = {{"Pig", {"Tiger", {"Dog"; char [][6] = {{'P', 'i', 'g', 0, {'T', 'i', 'g', 'e', 'r', 0, {'D', 'o', 'g', 0; 8-.cpp char a[][6] = {{"Pig", {"Tiger", {"Dog"; int i; for(i=0;i<;i++) { cout << a[i] << endl; Pig Tiger Dog

19 20 函式簡介 數學函數 mathematical function 數學上有所謂的函數 (function) y = f(x) x 為自變數, y 為應變數 舉例 y = f(x) = x 2 +x+2 5 0 y = sin() 數學函式指定一些運算使用的參數, 並計算出一些結果 5 0 25 20 15 10 5 0 5 5 1 1 5 21 22 函式簡介 在電腦程式上, 函式 (function) 為獨立的程式運作單元 (unit), 或稱為模組 (module) 副程式 (subroutine) 程序 (procedure) 函式常用來包裝複雜的程式碼, 使主程式看起來較為簡單易懂 函式是用來創造 黑盒子 (black box) 只看得見進去盒子的東西, 和出來盒子的東西, 盒子裡怎麼運作是看不到 也不想看到的 y = sin() C/C++ 所提供的指令很少 基本算術運算 (+,-,*,/,%) 選擇性述敍 迴圈述敍, 許多功能藉由函式所提供與擴充 ( 如三角函數, 字串處理, ) 當需要使用函式時, 會需要兩個要件 : 函式的原型宣告 (prototype) 由標頭檔 (header file) 取得 函式的定義 (definition) 由函式庫 (library) 取得 1-1.cpp // 輸出 "Hello World" 至螢幕上 cout << "Hello World"; /* 函式執行完畢, 回傳 0 */ 將 iostream 這個標頭檔內含有以定義標準輸入輸出之類別 物件 與函式等等的宣告 標準函式庫裡的東西都定義在 std 這個命名空間裡, 用來避免名稱的衝突 使用標準程式庫的 cout 物件輸出 2 2 函式的來源 C/C++ 標準函式庫 (standard library) 為程式語言認為必要提供的基本功能 C/C++ 標準函式庫 自訂函式 第三方 (third party) 免費的或商業的程式庫 C/C++ Standard Library

25 26 程式執行結果 數學函式庫 注意, 在電腦裡的三角函數以弳度為單位, 而非我們一般使用的角度 角度 : 以 60 度為一個圓 弳度 : 以 2 為一個圓 角度轉弳度 角度 * / 180 弳度換角度 弳度 * 180 / http://www.cplusplus.com/reference/clibrary/cmath/ 類別三角函數 sin asin cos acos tan atan sinh, cosh, tanh 指數與對數 exp log log10 次方與根號 pow sqrt 進位與捨位 ceil floor 取絕對值 fabs, 0: 0, 1 8-5.cpp 10: 0.1768, 0.98808 20: 0.202, 0.9969 0: 0.5, 0.866025 0: 0.62788, 0.7660 50: 0.7660, 0.62788 60: 0.866025, 0.5 70: 0.9969, 0.202 double theta; 80: 0.98808, 0.1768 double rad; 90: 1, 6.122e-017 double coeff =.115926558979286 / 180.0; for(theta=0; theta<=90; theta=theta+10) { rad = theta * coeff; cout << theta << ": " << sin(rad); cout << ", " << cos(rad) << endl; 27 28 8-6.cpp 程式執行結果 2^ = 8 log10(2) = 0.010 log10(2^) = 0.9009 sqrt(.0) = 1.7205 pow(.0, 0.5) = 1.7205 double a; a = pow(2.0,); // 計算 2 的 次方 cout << "2^ = " << a; cout << "\nlog10(2) = " << log10(2.0); cout << "\nlog10(2^) = " << log10(a); cout << "\nsqrt(.0) = " << sqrt(.0); cout << "\npow(.0, 0.5) = " << pow(.0, 0.5); 8-7.cpp double a; a = log10(.0); cout << "a = log10(.0) = " << a << endl; cout << "pow(10.0, a) = " << pow(10.0, a) << endl; cout << "exp(1)=" << exp(1.0) << endl; cout << "log(exp(1)) = " << log(exp(1.0)) << endl; 程式執行結果 a = log10(.0) = 0.77121 pow(10.0, a) = exp(1)=2.71828 log(exp(1)) = 1 29 0 8-8.cpp a=sqrt(2) = 1.121 floor(a) = 1 ceil(a) = 2 a=-sqrt(2) = -1.121 floor(a) = -2 ceil(a) = -1 fabs(a) = 1.121 double a = sqrt(2.0); cout << "a=sqrt(2) = " << a << endl; cout << "floor(a) = " << floor(a) << endl; cout << "ceil(a) = " << ceil(a) << endl; a=-a; cout << "a=-sqrt(2) = " << a << endl; cout << "floor(a) = " << floor(a) << endl; cout << "ceil(a) = " << ceil(a) << endl; cout << "fabs(a) = " << fabs(a) << endl; floor: 傳回最接近且小於傳入參數的整數 ceil: 傳回最接近且大於傳入參數的整數 fabs: 取絕對值 C 標準函式庫 #include <cstdlib> 分類 函式名稱 說明 atof, strtod 字串轉浮點數 C 字串轉換 atoi 字串轉整數 atol, strtol 字串轉長整數 亂數 srand 設定亂數產生的種子 rand 產生一亂數 整數相關 abs, labs 取整數的絕對值 進階函式 bsearch 在陣列中找尋資料 qsort 對陣列中的資料排序 重要常數 RAND_MAX 亂數的最大值 http://www.cplusplus.com/reference/clibrary/cstdlib/ 5

1 2 8-9.cpp #include <cstdlib> int i, seed; cout << " 請輸入亂數種子 : "; cin >> seed; srand(seed); for(i=0;i<10;i++) { 請輸入亂數種子 : 1 1867,5 26500, 1572,5 2958,0 26, 2815,5 16827,1 91,1 1192,1 56, cout << rand() << "," << rand()%6 << endl; 請輸入亂數種子 : 2 29216, 17795,0 19650,0 261, 1816,1 28189,1 606, 17829,5 067,5 28961, 8-10.cpp #include <cstdlib> #include <ctime> int i; srand(time(0)); cout << endl; for(i=0;i<10;i++) { 2.71017 0.70186-1.8802-1.586 1.0997-1.8172 1.96655-1.125 0.68908 1.00778 cout << ((double) rand())/rand_max*6-2 << endl; 2.72756.8099.0119 0.19285 1.87078 1.0195 0.9789 1.2182-1.9567-1.689 C 字串函式庫 #include <cstring> 函式名稱 strncpy strncat strcmp strlen strchr strrchr 說明 字串拷貝 字串串接 傳回字串比較結果 傳回字串長度 在字串中找尋一字元, 並傳回其位置 從字串尾端開始往回找尋一字元, 並傳回其位置 strstr 在字串中找尋一字串, 並傳回其起始位置 strtok 將字串依指定字元符號作切割 http://www.cplusplus.com/reference/clibrary/cstring/ 作業六 6