講師:吳崇維(wayne)
今日目標~
順便預告作業只有一題
分別輸出1 ~ 1000 中的
奇數, 偶數總和
活用 while + if-else
Problem B.
小明很討厭偶數,他只要看到偶數,就會反覆把它除以二,直到這個數字變成奇數為止。給定一個正整數,經過小明的處理,會變成多少呢?
---------------------------------------
範例輸入: 64
範例輸出: 1
----------------------------------------
範例輸入: 188416
範例輸出: 23
Problem A.
18:30 ~ 20:05 是奧林匹亞資訊班的上課時間。19:25~19:30是表定的短暫下課。
給你現在的時、分(24小時制),判斷現在是否為上課時間?
---------------------------------------
範例輸入: 18 45
範例輸出: YES
----------------------------------------
範例輸入: 17 25
範例輸出: NO
while (不懂迴圈) {
好好複習;
}
電腦比起人腦,最突出的一項能力:
重複一件事情而不犯錯!
程式設計自然也有重複執行的能力!
有了迴圈,程式的能力大幅提升
最基本迴圈
語法:
condition 是真偽的邏輯判斷
大括號裡頭想做什麼都可以!
這個迴圈會持續到condition為假
while (condition) {
do something;
}
當我想要重複作一件事情
有個簡潔的while寫法
int cnt;
cin >> cnt;
while (cnt--) {
do something;
}
迴圈恰好會跑cnt次!
int i = 10;
int x = i++;
V.S.
int i = 10;
int x = ++i;
i++: 程式跑完一行指令之後
才執行 i = i + 1; 的動作
++i: 程式先執行i = i + 1;
才執行該行程式
do {
statement;
} while (condition);
給你非負整數a, b, 請輸出a的b次方!
(注意任何正數的0次方 = 1)
設計師有時候不會想要乖乖的照著迴圈的規則走。
有彈性的控制,可以達到隨時跳出迴圈,或隨時重啟迴圈。
break指令,可以讓任何迴圈遇到他時,強制結束迴圈!
要注意的是我們現在只知道在迴圈裡使用,迴圈外的使用
是不允許的。
int x = 0;
while (1) {
x += 2;
if (x >= 10) {
break;
}
}
再也不是無窮迴圈!
雖然還是不要這樣寫...
int x = 0;
while (x < 10) {
x += 2;
}
while (1) {
if (2) {
if (3) {
if (0) {
;
} else {
break;
}
}
}
}
按:break到最近迴圈的底部
while (1) {
while (1) {
break;
}
break;
}
按:break到最近迴圈的底部
巢狀迴圈
將迴圈移駕到剛開始的位置
int x = 0;
int y = 0;
while (x <= 10) {
x++;
continue;
y++;
}
練習:假設已設定一個四位數密碼1234
接著程式會不斷讀取輸入,
若是密碼錯誤,輸出 try again!
若是密碼正確,輸出 login! 並結束程式
更為精準,高級的迴圈!
語法 :
initialization: 初始化 (第一次進入會跑)
condition : 條件( 類似while ) (每次都會檢查)
adjustment : 每次迴圈的調整 (第二次之後會跑)
基本的 () {} 架構不變。
for ( initialization ; condition ; adjustment) {
statement;
}
三個欄子如果不需要,任何一個可以空著
好的迴圈,每次跑的時候都會有一點點的不一樣
否則就是無窮迴圈了!因此總是需要作調整
你是設計師,可以自行決定怎麼寫!
先用紙筆寫下你覺得的輸出結果!
Homework #4
試著用迴圈輸出如下圖的99乘法表!
挑戰1. 壓縮程式碼到15行以內
挑戰2.試試看用 '\t' 排版如下
可是下禮拜不會有作業
一起努力快樂寫程式吧!