C-style array 有時我們會需要紀錄大量同樣型別的變數,比如 GreenJudge c041 , 題目輸入 \(N\) 及 \(N\) 個人的現金,那我們要怎麼儲存呢??我們可以使用陣列 (array): #include <iostream> using namespace std; int main() { int n; cin >> n; int arr[n]; // ... return 0; } 第九行的 int arr[n]; 宣告整數型別的陣列,其長度為 n. 之後,我們就能以 arr[0], arr[1], …, arr[n - 1] 陣列中的元素 (element) 來存取陣列中的元素。...

在開始前先看一段程式碼: #include <iostream> using namespace std; int main() { int a = 87, b; b = a; a = 69; cout << "a = " << a << ", b = " << b << '\n'; return 0; } 猜猜看,以上程式碼的輸出為何?? 可能會有人以為是 69 69, 但實際上是 69 87, 原因是我們宣告 a, b 兩個整數變數,他們分別儲存在記憶體的不同位置,而我們強調過: 程式語言中 a = b; 的涵義為將 a 的值設定為 b. 第八行 b = a; 將 b 的值設為 a 當時的值也就是 \(87\), 之後第九行...

學完 if-else, while, for 之後我們已經可以解決許多問題惹。作為程序流程的最後一篇,今天介紹一個幾乎很少使用的語法:goto. 如果妳有寫過 batch 或 bash script 的經驗,應該不會對 goto 感到陌生。我們可以在程式碼當中的任意處加上 label:, 再用 goto label; 跳轉到該label:. 乍看之下很方便,但是在程式碼當中大量濫用 goto 將會肇致許多麻煩,因此被多數人視為洪水猛獸,包括 MISRA 等機構建議不要使用,有些人或許甚至沒學過。 事實上,if-else, while, for 等程序流程在編譯後,於組合語言當中,也都是各式各樣的跳轉指令 (jxx), goto 就是...

我們現在會輸出一行字串,對吧??如果要輸出兩行呢??複製貼上,搞定。可是要是是 \(100, 1000\), 甚至是 \(n\) 次呢??電腦的專長除惹計算,還有做重複的事,這時我們可以運用迴圈。 while while 的語法有點像 if: while (condition) { // ... } 與 if 的不同在於 while 會重複執行大括弧內的陳述,直到 condition 為零。來看個範例吧 這個程式首先模擬丟擲一顆骰子,產生閉區間 \([1, 6]\) 內的偽隨機數為 val, 之後讓使用者輸入 n, 當 n != val 就讓使用者繼續猜。第二、八、九及十行前半是產生亂數的方法,可以先不理它。而第十行後半的 n =...

先前我們的程式很單純,就是順順得執行下去。再來的幾篇文章要介紹的陳述能讓我們的程式多些變化,並解決更多問題。 if-else 條件判斷 還記得1.1 的範例 嗎??我們寫惹個程式,允許使用者輸入兩個整數,而我們輸出兩者相除之商與餘數。然而,如果今天有人很 87 輸入87 0, 那麼會發生什麼事?? 動手手試看看,讓電腦除以 0 會怎樣?? 電腦會爆炸嗎??顯然不會。如果你在 VS Code 按下 F5 偵錯,這時程式回停下來告訴你 Exception has occurred. Arithmetic exception. 如果直接在終端機執行,會輸出 floating point exception 之類的。總之,程式不正常得提前...

其實在正式介紹之前,其實前面我們就有偷偷用過運算子惹,沒錯就是熟悉的 +, -, *, / 喇。接下來趕快來看看還有哪些運算子!! 算術運算子 +, -, *, /, % 屬之,就不多說惹。 指派運算子 這對新手是比較需要注意部分。在多數程式語言中,= 的意義與數學中的等號不同,一個表達式 a = b; 的涵義為將 a 的值設定為 b. 請在心中默念十六遍,開始!! 程式語言中 a = b; 的涵義為將 a 的值設定為 b. 簡單舉個例子: #include <iostream> using namespace std; int main() { int a = 87, b = 69; cout << "a = " << a <<...

[C++ 入門] 1.2 基本變數型別

接下來的兩篇分別介紹變數型別及運算子,初學者只需大略了解相關概念,必要時再查詢相關資料即可。 前面我們介紹如何宣告整數型別的變數,但其實變數不只有整數,其實整數也有不少種。C++ 中的基本資料型別可以分為整數、浮點數、字元及布林等等,其中因為 C++ 算是弱型別語言,字元及布林是能直接和整數轉換的。 整數 標準中的整數關鍵字計有:short, int, long, long long, … 為何要有那麼種多整數呢??以 ZeroJudge a002 為例,這題要求兩整數的和,相信對各位十分容易,肯定能輕易地寫出以下的程式: 現在請 F5 執行這個程式。輸入 \(87\ 69\), \(9487\ 666\), \(92\ 89\)...

概述變數與運算 程式在執行過程中,一如我們平時計算往往需要計算紙,總是會需要保存一下運算的過程與結果。當我們宣告一個變數,電腦就會在記憶體當中分配一個空間給予我們使用。今天我們的重點在輸入,因此先簡單介紹整數型別的變數。 還記得 1_2 的範例中,我們輸出 \(87 \times 69\) 以及 \(9487 \times 426 - 89 \times 64 + 87 \times 69\), 我們觀察到後者其實有用到前者的結果,因此我們可以宣告一個變數紀錄前者,如下所示: 第七行的 int n = 87 * 69; 代表我們宣告一個名為 n 的變數,其形態為整數 (int, integer), 同時我們將其值設為 \(87...

各位準備好發環境惹嗎??準備好惹!!那就讓我們打開 VS Code, 開啟一個你喜歡的資料夾然後創建新檔,正式開始寫程式喇!! 不免俗地來個 hello, world. 建議自己手打一次比較有印象,不要直接複製貼上。按下 F5, 這時 Linux, Windows 使用者點選下方的 Terminal 就會看到你的程式輸出一行 hello, world, 而 macOS 則是會彈出一個 Terminal. 接著就讓我們來細細品味、欣賞這個程式。這是 C++ 程式碼最基本的架構,雖然不必強求立刻完全理解每個細節,畢竟就跟數學、物理一樣,總是有一些基本的性質是需要背起來的,也許當下無法馬上理解也無妨,但相信多打幾次很快就可以記起來,而且...

俗諺云:「工欲善其事,必先利其器。」在我們正式開始寫程式前,當然也必須先準備好開發的環境。所謂開發環境,指的就是我們撰寫程式中所依賴的一切。 我們開發的既然是命令列程式,自然可以在命令列上開發,比如使用 vi 作為編輯器,再手動下 g++ 指令編譯,但那樣太電惹不適合我們。現代人一般使用整合式開發環境 (IDE, Integrated Development Enviroment), 具備文字編輯、編譯鍵置、執行偵錯、版本控制等功能的圖形化介面。 市面上的 IDE 琳瑯滿目,像是 macOS 專用的 Xcode, 以 Java 為主但考 APCS 或 TOI 入營考拿來寫 C++ 也很舒服的 Eclipse,...