---
# System prepended metadata

title: '[2020H401] 2020.7.2上課筆記'
tags: ['C/C++ ', H400大學家教]

---

# [2020H401] 2020.7.2上課筆記

## 今天課程重點
- 完成程式設計實習總複習
- C++教學：基本輸入與輸出複習
- C++教學：流程控制 if-else條件判斷式
- 撰寫期末專題[終極密碼]
- C++教學：變數和基本型別
- 課程進度確認


## 完成程式設計實習總複習

### 8-1. 
題目：輸入西元年份，判斷是否為閏年或平年

分析：
1. 讓使用者輸入一個數字，用int變數儲存
2. 判斷這個變數是否可以被 4 整除而且不能被 100 整除 或者 能被 400 整除
3. 若符合條件，則為潤年，否則為平年

### 8-2. 
題目：for 迴圈使用輸入數字 n，讓電腦自動從 1 開始加到 n，並顯示總合
分析：
1. 讓使用者輸入一個數字，用int變數儲存
2. 使用一個變數sum儲存總和
3. 使用一個for迴圈，i從1開始數, 數到使用者輸入的數字
4. 迴圈每回合，都拿目前總和跟i相加
5. 印出最後答案

### 8-3. 
題目：找出 1 到 100 之間，13 或 5 的倍數
分析：
1. 讓使用者輸入一個數字，用int變數儲存
2. 使用一個for迴圈，i從1開始數, 數到100
3. 迴圈每回合，判斷是不是13或5的倍數
4. 是的話，就印出來

### 8-4.
題目：使用巢狀 for 迴圈(迴圈內還有迴圈)，印出 5X4 星星矩陣
```
*****
*****
*****
*****
```

分析：
使用巢狀迴圈處理
- 總共四行，所以外層迴圈跑四次
- 每行印五個*，內層迴圈跑五次


### 8-5.
題目：巢狀 for 迴圈應用，印出星星金字塔。
```
   *
  ***
 *****
*******
```

分析：
使用巢狀迴圈處理
- 總共四行，所以外層迴圈跑四次
- 每一行是由空白跟*組成
    - 空白從3個遞減到0個 (3-i)
    - ＊從1增加到7，每次+2 (2*i+1)

### 8-6.
題目：由使用者決定三角形底邊長度，由螢幕輸入一個星號構成等腰三角形
```
   *
  ***
 *****
*******
```

分析：
使用巢狀迴圈處理
- 使用者輸入一個n
- 總共n/2+1行，所以外層迴圈跑n/2+1次
- 每一行是由空白跟*組成
    - 空白從3個遞減到0個 (3-i)
    - ＊從1增加到7，每次+2 (2*i+1)

### 8-6.
題目：while 迴圈用法，印出數字 1 到 99。
- 使用變數i控制執行次數 
- i<=99皆符合條件



### 排列組合計算器
- 讓使用者輸入選項
- 用程式描述P的公式, C的公式


### 九九乘法表
- 使用i, j控制迴圈
- 使用a, b當要輸出列印的變數
- i與a連動, j與b連動
- b要在正確時間歸正回1
```C++
    for (i=1;i<=9;i++){
        for(j=1;j<=9;j++){
            cout << a << "*"<< b <<endl;
            b++;
        }
        b=1;
        a++;
    }
```



## 撰寫期末專題[終極密碼]
終極密碼專題分析
1. 每次都會隨機出一個最終答案（1~100）
2. 使用者每次可輸入一個數字
- 如果輸入數字等於最終答案：告知使用者答對，遊戲結束
- 如果數字大於最終答案：告知使用者答案介於目前範圍最小值～輸入數字之間，使用者繼續猜
- 如果數字小於最終答案：告知使用者答案介於輸入數字～目前範圍最大值之間，使用者繼續猜
- 使用者猜超出範圍的數字：提示使用者重新輸入  


產生亂數的方法
```C++
#include <iostream>
#include <cstdlib> /* 亂數相關函數 */
#include <time.h>

int main(){
  /* 產生亂數 */
  srand((unsigned)time(NULL));
  int x = rand()%100;

  std::cout << "x = " << x << std::endl;
  return 0;
}
```



### 課程進度確認

1. 以下規劃為**最充足學習時間**來考量，若學習狀況良好，會提前進度教學，增加專題實作
2. 7/31會做一次學習狀況檢核討論

| 日期     | 課程進度   | 備註     |
| -------- | -------- | -------- |
| 6/18(Thr.)    | [C++教學] 基本觀念、輸入與輸出     |  OK    |
| 6/22(Mon.)    | [C++教學] 變數與資料型態(一)      |  OK    |
| 7/2(Thr.)     | [C++教學] 學期總複習練習      |  OK    |
| 7/6(Mon.)     | [C++教學] 流程指令及迴圈(一)      |      |
| 7/13(Mon.)    | [C++教學] 流程指令及迴圈(二)      |      |
| 7/20(Mon.)    | [C++教學] 陣列與指標(一)         |      |
| 7/27(Mon.)    | [C++教學] 陣列與指標(二)         |      |
| 8/3(Mon.)     | [C++教學] 函式              |      |
| 8/10(Mon.)    | [C++教學] 結構與類別(一)     |      |
| 8/17(Mon.)    | [C++教學] 結構與類別(二)     |      |
| 8/24(Mon.)    | [C++教學] 綜合練習(一)       |      |
| 8/31(Mon.)    | [C++教學] 綜合練習(二)       |      |


###### tags: `H400大學家教` `C/C++ `