C++ [2]

判斷式&迴圈

ZSISC32nd 公關X教學 鄭云晶

鄭云晶

公關兼教學

  • 學術力:網頁前端、基礎C++&Python
  • 興趣:吉他、睡覺
  • 專長:睡覺

來玩遊戲!來吃比薩!

320元/1件

好看!買買買!

課程目錄

條件判斷

if else

條件判斷

如果......就......

否則......

PASS

FAIL

if(判斷式) {
	// 當判斷式成立時才執行
}
if(判斷式1) {
	// 當條件1成立時才執行
}
else if(判斷式2) {
	// 當條件2成立時才執行
}
else {
	// 當判斷式1、2不成立時執行
}

如果

否則如果

否則

#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "請輸入成績: ";
    cin >> score;

    if (score >= 60) cout << "及格" <<endl;
    else cout << "不及格" <<endl;
 
    return 0;
}
  • 注意先後順序
  • 前一個條件不成立,才會往下個條件確認
  • else if 可以有很多個
  • 只有一行可以省去大括號
if(判斷式)執行內容;
條件式 ? 條件式符合時執行: 條件式不符合時執行

三元運算子

int a = 10, b = 20;
int max = (a > b) ? a : b; 
cout << max;

輸出20

題目練習

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    if (n % 2 == 0) cout << "Even" << endl; 
    else cout << "Odd" << endl;

    return 0;
}

迴圈是什麼?

迴圈(Loop)一種程式結構

「重覆執行程式碼」只要條件滿足,就會執行特定的動作。

簡潔、快速!

迴圈種類

  • for
  • while

前測試迴圈

後測試迴圈

  • do-while

for 迴圈

cout << "你好啊" << endl;
cout << "你好啊" << endl;
cout << "你好啊" << endl;
cout << "你好啊" << endl;
cout << "你好啊" << endl;

你好啊

你好啊

你好啊

你好啊

你好啊

有點麻煩?

for-計數迴圈

for (初始式; 判斷式; 更新式) {
    執行內容;
}
for (int i = 0; i < 5; i++) {
        cout << i; 
}

輸出01234

for (int i = 4; i > 0; i--) {
        cout << i; 
}

輸出4321

for-計數迴圈

for (int i = 0; i < 5; i++) {
        cout << i; 
}
for (int i = 4; i > 0; i--) {
        cout << i; 
}

輸出01234

i < 5 ?

i=0

輸出i

i=i+1

結束

輸出43210

i <0 ?

i=1

輸出i

i=i-1

結束

for (int i=0; i< 5; i++){
    cout << "你好啊";
}

你好啊

你好啊

你好啊

你好啊

你好啊

是不是快速方便很多?

範例

巢狀迴圈

for (初始式; 判斷式; 更新式) {
    for (初始式; 判斷式; 更新式) {
        // 內層迴圈程式碼
    }
    // 外層迴圈程式碼
}
  1. 外層迴圈一次
  2. 內層迴圈全部執完
  3. 外層迴圈下一次
  4. 重複以上

範例c418

一個 n 層的三角形,第 i 層就要有 i 個 " * "

輸出整個三角形~~

輸入5

*

**

***

****

*****

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < i; j++) {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

答案

j=0

j=0,1

j=0,1,2

j=0,1,2,3

j=0,1,2,3,4

*

**

***

****

*****

輸入5

 →

 →

 →

 →

 →

while 迴圈

while-條件迴圈

while (判斷式){
    執行內容
}

只要條件符合,就持續執行

Text

#include <iostream>
using namespace std;

int main() {
    int number, sum = 0, i = 1;

    cout << "請輸入一個正整數:";
    cin >> number;
    
    while (i <= number) {
        sum += i;
        i++;
    }

    cout << "從 1 加到 " << number << " 的總和是: " << sum << endl;

    return 0;
}

簡單範例

  • 若條件一開始就是 false,迴圈一次都不會執行。

  • 如果條件永遠為 true → 會變成 無限迴圈

while (true){
    cout << "喔耶" << endl;
}

喔耶

喔耶

喔耶

 

.

.

.

*for和while互換

int a;
for(a=5; a>0; a--)
{
  cout<< a <<endl;
}
int a;
a=5;
while(a>0) {
  cout<< a <<endl;
  a--;
}
#西元年被4整除且不被100整除,或被400整除者即為閏年

a004文文的求婚

提示:

#include <iostream>
using namespace std;

int main() {
    int year;
    while(cin >> year){

        if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
            cout <<"閏年" << endl;
        } 
        else {
            cout <<"平年" << endl;
        }
    }
    return 0;
}

do-while 迴圈

先執行程式再判斷條件!
do {

一般指令;
} while(測試條件) ;

do-while 迴圈

(確保至少執行一次
#include <iostream>
using namespace std;

int main() {
    int number;

    do {
        cout << "請輸入一個大於 0 的數字: ";
        cin >> number;
    } while (number <= 0);

    cout << "你輸入的數字是: " << number << endl;

    return 0;
}

範例

  • -3 → 迴圈繼續,再次要求輸入。

  • 0 → 條件仍成立,繼續輸入。

  • 5 → 條件不成立,跳出迴圈,輸出

break/continue

這個迴圈會執行什麼?

int main() {
    int n = 3;  
    while (n < 2) {
        cout << "你好" << endl;
    }

    return 0;
}

你好

你好

你好

.

.

.

.

無限迴圈!!!!!

break

立即結束整個迴圈

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
    break;
    }
    cout << i << " ";
}

1 2

跳過當前迴圈的剩餘部分,直接進入下一圈

continue

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
    continue;
    }
    cout << i << " ";
}

1 2 4 5

Kahoot!

deck

By shiny0515