Advanced Search
Search Results
53 total results found
3.3 二分搜
4.1 STL、iterator、pair、vector介紹
4.2 stack、queue介紹
4.3 set、map介紹
5.1 一維陣列
陣列(Array)的結構 陣列這種資料結構是用來儲存許多相同型別的資料用的。如果我們把變數想像成是一個可以放東西的箱子,那麼陣列就是一堆箱子的集合,而且每個箱子都有一個連續編號的索引值(index)。 例如:我們要儲存 10 個學生的成績(都是整數),我們可以使用這樣一個內含 10 個元素(element)/項目(item)的陣列。 宣告陣列 在程式中我們可以這樣宣告這個陣列 score。 int score[10]; 其語法為 型別 陣列名稱[元素數量]; 其中陣列名稱的命名規則與一般變數的命名規則相...
5.2 字串
字串是字元的陣列 字串可以被視為一個字元型別的一維陣列,例如:"Hello world!"在記憶體中是這樣一個一個字元儲存的。 #include <iostream> using namespace std; int main() { char greeting[13] = "Hello world!"; cout << greeting; return 0; } 在上圖中最後一個字元 '\0'是什麼呢?這個是所謂的 null字元。 因為每個字串的長度是不一定的,cou...
5.3 多維陣列
二維陣列 把索引值擴展為 2 維,我們就可以得到二維陣列。 一個大小為 m x n 的二維陣列,可以這樣宣告。 // 宣告一個 4 x 6 的 int 二維陣列 int A[4][6]; 和一維陣列一樣,可以在宣告時給定初值。 int A[4][6] = { {1, 2, 3, 4, 5, 6}, {5, 12, 7, 11, 9, 8}, {10, 21, 13, 22, 23, 16}, {4, 78, 13, 45, 51, 11} }; 搭配雙層迴圈遍歷其值 我們可以使用雙層迴圈,把前...
6-1 函數
隨著寫程式經驗愈來愈多,你會發現有些程式碼會不斷重複出現,就像例行性工作一樣,例如:求平方根、將資料排序、驗證帳號密碼......等等。一次又一次的輸入這些程式碼會讓人很不耐煩。對於這些經常出現的程式碼片段,我們可以使用函數來把它們包裝起來。C/C++裡面的函數就像數學裡面的函數,例如: $f(x)=2x^2+3x+4$ 它有一個輸入:x,有一個輸出:f(x)。你給它一個輸入 3,它在運算後會給你一個輸出31;你給它另一個輸入 2,它會給你另一個相應的輸出18。不管你給的輸入是什麼,它都會很忠實的去完成該做的事 $...
6-2 重覆使用函數
相同名稱的函數 原則上函數的名稱不能重覆,但是只要其參數列不同,就可以使用相同的名稱。 以下面的程式為例,我們可以觀察到叫用函數時,編譯器會檢查函數名稱和參數列數量和型別。 #include <iostream> using namespace std; // 回傳 2 整數中的最小值 int MIN(int a, int b) { cout << "回傳 2 整數中的最小值" << endl; if(a<=b) return a; else return...
6-3 傳值呼叫 與 傳參考呼叫
參數與引數 在提到函數與呼叫使用函數時,我們會用到 參數(parameter) 和 引數(argument) 這兩個名詞。 我們可以簡單的用這張圖來區分他們。 參數(parameter) 是在定義函數時,用來承接傳入資料的變數。 引數(argument) 是在呼叫使用函數時,傳入的資料。 然而在大多數的情況下,大家並不會區分的那麼清楚,很多時候我們都會用 參數 來意指兩者。在後續的內容裡除非特別需要指出其不同,否則我們會使用 參數 這個詞。 傳值呼叫(call by value) 在叫用函數時,我們通常都...
6-4 將陣列傳入函數
傳址呼叫(call by address) 除了「傳值呼叫」、「傳參考呼叫」外,還有一種參數傳遞方式叫「傳址呼叫」。 為什麼叫「傳址」呢?因為這種方式是直接把變數在記憶體中的 「位址(address)」 傳進去給函數,在函數裡我們直接到記憶體中的相應位置去操作這個變數的值。所以傳址呼叫和傳參考呼叫一樣可以動到外面變數的值。 關於傳址呼叫,因為會接涉到記憶體位置和指標(pointer),比較複雜,我們會稍後再來看這個主題。 不過由於大家可能會有需要把一個陣列傳入函數裡,所以我們先來看要如何做到。 一個陣列裡面的元素可...
6-5 全域變數與靜態變數
全域變數(Global variable) 一般來說,我們使用函數時會將操作到的變數限制在函數裡,也就是以區域變數的方式使用。如有需要操作到函數外面的變數,我們會用傳參考或傳址的方式來處理。 我們以一個抽號碼牌的程式來示範。 練習:抽號碼牌(1) #include <iostream> using namespace std; int getTicket(int &num) // 以傳參考方式遞增外面的 num 變數值 { num++; return num; } int main() { ...
*2.4 C 語言的 printf( ) 格式化輸出函數
為什麼需要「格式化」輸出? 想像一下,如果你的程式計算出圓周率是 3.1415926,但你只想在螢幕上顯示 3.14;或者你希望輸出的成績單欄位能夠像表格一樣文字靠左對齊,數值靠右對齊。 這些都無法單純地將變數丟出來就辦到,我們需要「告訴」printf 應該用什麼「格式」來呈現資料,這就是格式化輸出的精髓。 標頭檔 要使用 printf,請務必在程式開頭引用標頭檔: #include <cstdio> cstdio 是指 C語言的標準輸入輸出(c standard input output)。 printf 語法...
*2.5 C 語言的 scanf( ) 格式化輸入函數
我們已經學會如何用 printf 讓程式輸出精美的訊息。但一個真正有用的程式,不僅要會「說」,更要會「聽」。它需要接收使用者的指令、數據,才能進行下一步的處理。 scanf (scan formatted) 就是這座溝通的橋樑。它會暫停程式的執行,靜靜地等待使用者從鍵盤輸入資料,然後依照我們指定的「格式」去解析這些輸入,並將它們存放到對應的變數中。 同樣地,要使用 scanf,請務必在程式開頭引用標頭檔: #include <cstdio> 2.5.1- scanf 的核心語法與「&」的秘密 scanf 的語法看...
3.5 三元運算子 ? :
3.5.1 三元運算子? : 在 C++ 中,三元運算子(Ternary Operator)是唯一一個需要三個運算元的運算子。它的符號是 ? 和 :。 這個運算子主要用來取代簡單的 if-else 判斷式,讓程式碼在一行內就能完成條件判斷與賦值,非常方便。 語法 三元運算子的基本語法結構如下: 條件式 ? 運算式1 : 運算式2; 條件式 (Condition): 這是一個會回傳 true (真) 或 false (假) 的布林表達式。 ? : 這是三元運算子的核心符號。 運算式1 (Expression1...