Professional Documents
Culture Documents
關係運算子與邏輯運算子
if 敘述
switch – case 敘述
關係運算子與邏輯運算子
關係運算子
邏輯運算子
常用來判斷複合條件,結果是布林值,
不是 1 (true),就是 0 (false)
邏輯運算子及其真值表
邏輯運算子
實例
0 ≤ x <1
(0 <= x) && ( x < 1)
if 敘述
if 指令
條件式 true,執行敘述,否則執行 if 外
的下一行敘述
屬於單向選擇結構
if 指令
if 內有多個敘述,應用 { } 將敘述括起來
if 指令
非 0 的數值,布林值是 true
以下敘述是相同的
if (運算式 != 0) if (運算式)
if (運算式 == 0) if (!運算式)
if - else 敘述
條件式true,執行敘述1,否則執行敘述 2
屬於雙向選擇結構
if - else 敘述
條件式成立,執行運算式 1,否則執行運
算式 2
if - else 敘述
實例
a = (7 == 3) ? 4 : 3
條件式 7 == 3 為 false,所以 a = 3
b = (7 == 4 + 3) ? 4 : 3
條件式 7 == 4 + 3 為 true,所以 b = 4
if - else 敘述
求 a 和 b 兩數之最大數 max
max = (a > b) ? a : b;
求 a 的絕對值 ab
ab = (a >= 0) ? a : -a;
判斷 n 是否為奇數 odd
odd = (n % 2) ? 1 : 0;
if else if 敘述
巢狀選擇結構
if 內包含 if 敘述
使用巢狀選擇結構時,應注意 if 和 else
的配對
switch – case 敘述
switch – case 敘述
以變數作為計數器,控制迴圈執行的次
數,又稱為計數迴圈
指令格式
※ 括號內三者以分號 ; 隔開
for 指令格式
1. 將 i 的宣告和初始化放到初始值中
for (int i = 1; i <= 100; i++ )
sum += i;
迴圈內宣告,只在迴圈內有效, 離開迴圈
就不能使用,若要使用,必須再宣告
2. 將變數初始化放到初始值中
for (sum = 0, i = 1; i <= 100; i++ )
sum += i;
while 迴圈
前測式重複結構 while
已知迴圈數:用 for
無法預知迴圈數:用 while
while 屬於前測式重複結構,執行迴圈前,
會先檢查條件式是否成立
前測式重複結構 while
指令格式
條件式 false,不執行迴圈,跳到迴圈外
的下一敘述
條件式 true,執行迴圈,再檢查條件式,
不斷循環,直到條件式不成立
前測式重複結構 while
共執行 5 次,
最後 i 值為 5
輸出 54321
前測式重複結構 while
計算 1 加到 n
無窮迴圈
for ( ; ; ) while ( 1 )
5.2.1 前測式重複結構 while
重複讀取資料
while (cin >> 變數1 >> 變數2 ⋯)
重複讀取 x, y 值,直到輸入為空 (NULL)
while ( cin >> x >> y )
while 後面要有分號 ;
先執行一次,再判斷條件式是否成立,
若成立,再執行迴圈,否則跳離迴圈
後測式重複結構 do - while
可用於限制輸入值的範圍
例如要確保輸入值在 1 ~ 12,可將輸入的
敘述放到 do –while 結構內
多重迴圈
goto 可以跳離好幾層結構,不建議使用
continue 會讓程式跳回迴圈的開頭,再
繼續執行下一次迴圈
break 跳躍指令
break :會結束整個迴圈
continue:只結束本次迴圈,不會終止整
個迴圈
break 跳躍指令
質數問題
質數:除了 1 和本身外,沒有其他因數
例如網路安全的公開金鑰密碼系統,常
使用大質數作為金鑰
• N = 大質數 A × 大質數 B,
N 可能幾百位數,所以可公開,因為很
難分解出是那兩個質數的乘積
• 所以系統的安全強度和所用的質數大小
有關,質數越大,安全性越高
break 跳躍指令
練習題
練習題 c005. UVa環保獎金
練習題 a058: MOD3
練習題 a005-Eva 的回家作業
練習題 d010- 盈數、虧數和完全數
練習題 d074: 電腦教室
練習題 a148: You Cannot Pass?
練習題 d122: Oh! My Zero!
練習題 a024- 最大公因數(GCD)
練習題 a147: Print it all
練習題 a215-明明愛數數
挑戰題 a010-因數分解
挑戰題 a040-阿姆斯壯數
挑戰題 c079-UVa- Peter's Smokes
挑戰題 a007-判斷質數
練習題 d260: 11455 - Behold my quadrangle
練習題 a121: 質數又來囉
練習題
挑戰題 d087: acm-107 - The Cat in the Hat
練習題 c013-acm-488-Triangle Wave
練習題 b112:93全國 5. 高中運動會
練習題 c087: acm-412 Pi 互質
練習題 d693: 最小公倍數
練習題 a244: 新手訓練 ~ for + if
練習題 d186:acm 11461 - Square Numbers
練習題 10849 - Move the bishop
練習題 a781: 3. Checkerboard 印棋盤
練習題 d356: NOIP2002 1.级数求和
練習題 c022: 10783 - Odd Sum
練習題 d660: 11764 - Jumping Mario