# 20191212 基礎班 --- ## 本次講義皆為課後新增 --- ## 課程大綱 1. 作業檢討 2. 編譯流程 3. Array 與 String --- ### 作業參考解答 ```cpp #include <iostream> using namespace std; int main() { long long number; cin >> number; int oddSum = 0; int evenSum = 0; bool even = false; bool visaHead = false; bool mastercardHead = false; bool americanExpressHead = false; int i = 0; while (number > 0) { i++; int now = number % 10; if (even) { // 偶數位要做的事 // *2 now *= 2; // 個位數+十位數 // 加到 evenSum evenSum += (now % 10) + (now / 10); } else { // 奇數位要做的事 // 加到 oddSum oddSum += now; } number /= 10; if (number >= 10 && number <= 99) { if (number >= 40 && number <= 49) { visaHead = true; } else if (number >= 51 && number <= 55) { mastercardHead = true; } else if (number == 34 || number == 37) { americanExpressHead = true; } } even = !even; } // oddSum + evenSum int answer = oddSum + evenSum; // 判斷尾數是不是 0 if (answer % 10 != 0) { cout << "無效卡號"; return 0; } if (visaHead && (i == 13 || i == 16)) { cout << "VISA"; return 0; } if (mastercardHead && i == 16) { cout << "MasterCard"; return 0; } if (americanExpressHead && i == 15) { cout << "American Express"; return 0; } // return 0; } ``` --- ## 編譯流程 程式碼轉換成執行黨的過程會經過以下四個階段 1. Preprocessing 預處理 2. Compiling 編譯 3. Assembling 組譯 4. Linking 連結 ---- ### 1. Preprocessing 預處理 檢查是否有語法錯誤(Syntax Error) * [語法錯誤 - 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/%E8%AA%9E%E6%B3%95%E9%8C%AF%E8%AA%A4) ---- ### 2. Compiling 編譯 將程式碼轉成較低階的語言 一般而言指的是「組合語言」(Assembly) * [組合語言 - 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80) * [什麼是「組合語言」? | 電腦不難](http://it-easy.tw/assembly-language/) ---- ### 3. Assembling 組譯 將組合語言轉成機器語言 * [機器語言 - 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/%E6%A9%9F%E5%99%A8%E8%AA%9E%E8%A8%80) ---- ### 4. Linking 連結 把你的程式和相關的程式庫連結 轉換成可執行檔 例如 Windows 的 .exe 檔 --- ## Array 與 String Array 與 String 的相關簡報內容之後補上 --- ## 本週作業 上次信用卡作業改為使用 String 處理 ---- 將使用者輸入的卡號使用 string 儲存 ```cpp string number; cin >> number; ``` ---- 你可以直接透過尋找 `'\0'` 的位置 來判斷 number 的長度 ---- 透過 string/array 的特性 你可以直接取得任意位置的字元 ---- ### 注意 String 的內容物為「字元」 若直接轉為 int 是 ASCII 的值 文字 0~9 記得減掉 `'0'` 以轉換為數字 0~9 `1 == '1' - '0'` ---- ### 作業繳交連結 https://classroom.github.com/a/CnxwDg3g
{"metaMigratedAt":"2023-06-15T02:32:28.644Z","metaMigratedFrom":"YAML","title":"20191212 基礎班","breaks":true,"slideOptions":"{\"transition\":\"convex\"}","contributors":"[{\"id\":\"39811bc9-1305-4534-84c5-a4c97d2ac539\",\"add\":2836,\"del\":80}]"}
    713 views
   owned this note