主題大綱

  • 循序結構及四則運算

    • 基本螢幕輸出 指令:cout<<"Hello!";
    • 基本鍵盤輸入進變數 指令:cin>>name;
    • 宣告變數
    • 整數 int age;
    • 浮點數 float score;
  • 選擇結構

  • 重複結構

    for (i=1;i<=10;i=i+1)

    {
        cout<<"hello!";
    }

    for (i=1;i<=10;i=i+1)
    {
        cout<<i;
    }

    • 雖然for 迴圈反覆執行相同語句,但這些語句每次執行效果往往不同。
    • 編寫程式時,要特別留意變數的改變。
    • 建議盡量縮短變數的定義範圍,例如在for迴圈的出數畫部分定義迴圈變數。
    • continue; 是指跳回for迴圈的開始,執行下一次迴圈。
    • break; 是指直接跳出迴圈。
    • for 迴圈中三個部分都是可以省略的,例如:
      for (int x=1; ; x++)
    • for (;;) 代表什麼意思?

    巢狀迴圈

    • for 迴圈內還有 for 迴圈
  • 又是迴圈

  • 瘋狂卡車

    • 當迴圈次數是不確定的,而且計數 i 也不是「遞增」方式,則改用while迴圈來實作
    • 可以用一個變數來充當計數器
    • 變數在未指定值之前的值是不確定的,它不一定等於0
    • 在無法找出錯誤時,可以「輸出中間結果」的方法來查找錯誤

    while (條件式)
    {
        要重複做的事情
    }

    i=0;
    while (i<=10)

    {
        cout<<"hello";
        i=i+1;

    }

  • 一維陣列

    • 變數太多?同類型的可不可以用好方法解決...
    • 輸入十個同學的成績,請讓使用者查詢第幾位同學的成績。

    • int score[10];
    • 從0開始.. :)
  • 陣列練習

  • 排序演算法

    選擇排序演算法(Selection Sort)

    是一種簡單容易理解的演算法,其概念是反覆從未排序的數列中取出最小的元素,加入到另一個的數列,結果即為已排序的數列。運算流程如下:

    1. 從未排序的數列中找到最小的元素。
    2. 將此元素與未排序部分的第一個元素進行交換。
    3. 重複以上動作直到未排序數列全部處理完成。

    範例:

    8 2 5 3 4 6 7

    2 8 5 3 4 6 7

    1 2 8 5 4 6 7

    1 2 3 5 8 6 7

    1 2 3 4 8 5 6 7

    1 2 3 4 5 8 6 7

    1 2 3 4 5 6 7

    1 2 3 4 5 6 7 8

    氣泡排序演算法(Bubble Sort)

    將最大的數值移動到陣列最後面,而較小的數值則逐漸的往陣列前端移動,就像有許多氣泡慢慢從底部浮出,因此成為氣泡排序法。運算流程如下:

    1. 比較相鄰的兩個元素,若前面的元素較大就進行交換。
    2. 重複進行1的動作直到最後面,最後一個元素將會是最大值。
    3. 重複進行1,2的動作,每次比較到上一輪的最後一個元素。
    4. 重複進行以上動作直到沒有元素需要比較。

    範例:

    8 2 1 5 3 4 6 7

    2 8 1 5 3 4 6 7

    2 1 8 5 3 4 6 7

    2 1 5 8 3 4 6 7

    2 1 5 3 8 4 6 7

    2 1 5 3 4 8 6 7

    2 1 5 3 4 6 8 7

    2 1 5 3 4 6 7 8

    1 2 5 3 4 6 7 8

    1 2 5 3 4 6 7 8

    1 2 3 5 4 6 7 8

    1 2 3 4 5 6 7 8

    • 氣泡排序法

    • 插入排序法

    • 選擇排序法

  • 二維陣列

    int x[10][5];

  • 字串

    string 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限長度的優點外,還有其他許多方便的功能。要使用 string, 必須先加入這一行:

    #include <string>

    接下來要宣告一個字串變數,可以寫成:

    string s;

    讀取一行含空白的字串,可以寫成:

    getline(cin,s);

    字串長度

    s.length();
  • 找質數

    挑戰一:讓使用者輸入一個數字,輸出這個數所有的因數。

    挑戰二:讓使用者輸入一個數字,輸出這個數的因數個數。

    挑戰三:讓使用者輸入一個數字,判斷這個數是否為質數。

    挑戰四:讓使用者輸入一個數字,輸出2~這個數字範圍內所有的質數。

  • 動態規劃

    被特別標註的

    動態規劃(Dynamic Programming,簡稱DP)

    重複的事情不要再做第二遍

    河內塔為例

    所以要建一個表來記錄算過的東西,然後取最佳解再填入表格

    思考:現在店家有1、5、10、25元面額的硬幣,不限數量,當店員要找給客人31元的時候,可以怎麼找?

  • TOI 練習賽

  • 期中考(一)