Loop
While Loop & Do-While Loop & For Loop
- 葉子齊 -
| #1 介紹迴圈 | #2 While迴圈 &Do-While迴圈 |
#3 For迴圈 |
| #4 比較 | #5 應用—巢狀, break&continue |
#6 kahoot! |
INDEX
介紹迴圈
Let’s take a look at what a loop is.
action🎬

成功電研36屆某教學學長
action🎬


\ 罰寫100遍「我不該在校長室前睡覺」/
\ zzz /

迴圈
重複執行
- 賴床
- 當媽媽還沒生氣時,就再睡㇐下
-
背英文單字
- 把英文單字寫10遍
WHILE迴圈
while
while(條件式){
達成條件時執行;
//迴圈主體
}條件成立
執行 迴圈主體
否
是
跳出迴圈while -> 當
while
int height;
cin>>height;
while(height>165){
cout<<"你好高"<<endl;
}Q: 輸入170會發生什麼事?
無窮迴圈
!
你好高 你好高 你好高 你好高 你好高
你好高 .
.
.

while
int height;
cin>>height;
while(height>165){
cout<<"你好高"<<endl;
cin>>height;
}解決無窮迴圈
- - - - - - - - - - - - - - - - - - - - - - - -
while
try try 看
用while迴圈 輸出五次「我不該在校長室前睡覺」
1.5 mins.
while
int N=0;
while(N<5){
cout<<"我不該在校長室前睡覺"<<endl;
N=N+1;
}
輸出:
我不該在校長室前睡覺
我不該在校長室前睡覺
我不該在校長室前睡覺
我不該在校長室前睡覺
我不該在校長室前睡覺
1 2 3 4 5
answer
while
int N=0;
while(N<5){
cout<<"我不該在校長室前睡覺"<<endl;
N=N+1;
}
| 0<5 | N=0 | N=1 |
| 1<5 | N=1 | N=2 |
| 2<5 | N=2 | N=3 |
| 3<5 | N=3 | N=4 |
| 4<5 | N=4 | N=5 |
1 2 3 4 5
| 5<5 |
6
while(N<5)
cout<<"我不該在校長室前睡覺";
N=N+1;
不成立跳出迴圈while
try try 看 - 上次的回家作業
5 mins.
review



try try see
answer
#include <iostream>
using namespace std;
int main()
{
int year;
while(cin>>year){ //當輸入year時,執行以下程式:
if( year%4==0 && year%100!=0 || year%400==0 )
cout<<"閏年"<<endl;
else
cout<<"平年"<<endl;
}
}
如果
「year能被4整除」且「year不能被100整除」
或「year能被400整除」
% -> 取餘數
year除以4取餘數等於0 -> year能被4整除
ex: 20 100 5052
while(cin>>變數) 常用!
do - while
億點點小補充- 先執行程式再檢查條件
int vacation;
cin>>vacation;
while(vacation>2){
cout<<"yeah";
cin>>vacation;
}int vacation;
do{
cout<<"yeah";
cin>>vacation;
}while(vacation>2);
[While]
[Do-While]
默認條件符合 直接執行程式for迴圈
for
for(起始值; 條件式; 更新值){
達成條件時執行;
}for(int i=1;i<=5;i++){
cout<<i<<" ";
}輸出:
1 2 3 4 5
for
for(int i=1;i<=5;i++){
cout<<i<<" ";
}| i = 1 | i = 2 | |
| i = 2 | i = 3 | |
| i = 3 | i = 4 | |
| i = 4 | i = 5 | |
| i = 5 | i = 6 |
1 2 3 4 5
| i = 6 |
6
i = ?
i <= 5
i++
不成立跳出迴圈1. 設定變數 i=1;
2. 檢查 i<= 5 是否成立,不成立則跳出迴圈
3. 執行 cout << i << endl;
4. 執行 i++ ( 即 i=i+1 )
5. 檢查 i<= 5 是否成立,不成立則跳出迴圈
6. 執行 cout << i << endl;cout<<i<<" ";
for
int money=0,day=30,time=2;
for(money=10;day<=60;time++){
//舉例用
}- 小提醒
不一定都是同一個變數,只要符合公式都可以,不要被限制住
COMPARE
-
For跟While都是迴圈 兩者可互換
for(int i=1;i<=5;i++){
cout<<i<<" ";
}輸出:
1 2 3 4 5
[For迴圈]
[While迴圈]
int i=1;
while(i<=5){ //或用i<6
cout<<i<<endl;
i+=1; //i=i+1
}1 2 3 4 5
應用
巢狀迴圈,break&continue
巢狀迴圈
- 迴圈裡面又包了一個迴圈
- 常見使用時機:某件事需要做 m 次,而這m當中,每㇐次又另外有 n 件事要做
for(int i=0; i<m; i++){ //外(層)迴圈
for(int j=0; j<n; j++){ //內(層)迴圈
這邊會得到所有的 i,j 組合
}
}注意大括號要成對哦!巢狀迴圈
- 九九乘法表
for(int i=1; i<10; i++){
for(int j=1; j<10; j++){
cout << i*j << " ";
}
cout << endl;
}- i -> 1 ~9
- j -> 1 ~9
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
輸出:
注意空格(Tab)差異
cout<<endl; 是i迴圈的...
i =1
j = 1 i*j =1*1
j = 2 i*j =1*2
. . .
j = 9 i*j =1*9
endl;
i =9
j = 1 i*j =9*1
j = 2 i*j =9*2
. . .
j = 9 i*j =9*9
endl;
巢狀迴圈
5 mins.
try try 看
巢狀迴圈
answer
一個 n 層的三角形,第 i 層就要有 i 個 *int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i = | j = | |||||
| 1 | 1 | |||||
| 2 | 1 | 2 | ||||
| 3 | 1 | 2 | 3 | |||
| 4 | 1 | 2 | 3 | 4 | ||
| 5 | 1 | 2 | 3 | 4 | 5 |
輸入: 5
* ** *** **** *****
輸出:
j<=i
break&continue
-
可用在while迴圈跟for迴圈 - 搭配條件判斷使用
- 表強制跳出該迴圈
-
可用在while迴圈跟for迴圈
- 搭配條件判斷使用
- 表強制結束此次迴圈循環
[Break][continue]break&continue
-
表強制跳出該迴圈
-
表強制結束此次迴圈循環
[Break][continue]for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<" ";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<" ";
}0 1 3 4
0 1
i=0 i=1 i=2 break;
i=0 i=1 i=2 continue; i=3 i=4
跳出整個迴圈,不再執行
只跳出那一次迴圈
輸出:
kahoot!
5分40秒
while(條件式){
達成條件時執行;
//迴圈主體
}while(更新值){
達成條件時執行;
//迴圈主體
}while(初始值){
達成條件時執行;
//迴圈主體
}while(飢餓值){
達成條件時執行;
//迴圈主體
}A
B
C
D
A
B
D
for(條件式; 起始值; 更新值){
達成條件時執行;
}for(起始值; 更新值; 條件式){
達成條件時執行;
}for(起始值; 條件式; 更新值){
達成條件時執行;
}for(飢餓值; san式; 生命值){
達成條件時執行;
}int n=4;
for(int i=1;i<n;i++){
for(int j=1;j<i;j++){
cout<<"+";
}
cout<<endl;
}| i迴圈 | i = 1 | i = 2 | i = 3 |
| 判斷 j < i | 判斷 j < i | 判斷 j < i | |
| j迴圈 | 1沒有<1 | j = 1 | j = 1 和 j = 2 |
| cout<< | + | ++ | |
| i迴圈 | (endl) | (endl) | (endl) |
輸出:
(空行)
+
++
9/26 C++ LOOP
By strange_swing
9/26 C++ LOOP
- 367