---
# System prepended metadata

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

---

# [2020H401] 2020.7.6上課筆記

## 今天課程重點
- CH6迴圈 加強練習


## CH6迴圈 加強練習
### Ex. 6-3.1
-  從使用者輸入的邊，轉換成三角形的「層數」
-  最外圈迴圈就是層數
-  每一層由" "跟"*"組成，找到他們個數與層數的關係



### Ex. 6-3.1
題目：使用者輸入底邊長度n，程式自動畫出一個底邊長度為n的等腰三角形
```
例如： 使用者輸入n=7，按下Enter，就會產生一個三角形如下：
   *
  * *
 *   *
*******
```

解析：
1. 將使用者輸入的底邊長度n，轉換成層數i=(n/2+1)
2. 知道層數後，先列印每一層的空白（i-1, i-1, i-2,...,0）
3. 空白之後的列印內容，分成三個情況討論
    - 第一層：
        - 印一個*
        - 換行
    - 最後一層：
        - 印n個*
    - 其他情況：
        - 印一個*
        - 再印（i*2-1）個空白
        - 再印一個*
        - 換行
4. 印幾層，次數用變數i控制迴圈；每層列印的文字，次數用變數j控制迴圈


參考程式碼：
```C++
#include <iostream>
using namespace std;

int main() {
  int n = 0;
  int i = 0;
  int j = 0;
  cout << "請輸入底邊> ";
  cin >> n;

  for(i=0;i<n/2+1;i++){
    //印空白u8
    for(j=0;j<n/2-i;j++){
      cout << " ";
    }
    //分三種情況討論
    if(i==0){
      cout <<"*"<<endl;
    }
    else if(i==n/2){
      for(j=0;j<n;j++){
        cout <<"*";
      }
      cout<<endl;
    }
    else{
      cout << "*";
      for(j=0;j< 2*i-1 ;j++){
        cout << " ";
      }
      cout << "*"<< endl;
    }
  }

}
```



### 課程進度確認

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++ `