C++
迴圈
Index
while
迴圈
當你想從 1 輸出到 1000
#include <iostream>
using namespace std;
int main(void) {
cout << 1 << '\n';
cout << 2 << '\n';
...
cout << 1000 << '\n';
}
還沒學過迴圈的你 be like:
太麻煩 & 花時間了
迴圈
當你想從 1 輸出到 1000
#include <iostream>
using namespace std;
int main(void) {
int n = 1;
while(n <= 1000){
cout << n << '\n';
n++;
}
}
學過迴圈的你 be like:
輕鬆解決
#include <iostream>
using namespace std;
int main(void) {
for(int i = 1; i <= 1000; i++){
cout << i << '\n';
}
}
while
當 ... 就 ...

飯粒:
當 n <= 1000,就輸出 n 並 +1
#include <iostream>
using namespace std;
int main(void) {
int n = 1;
while(n <= 1000){
cout << n << '\n';
n++;
}
}
while
用法:
while( 重複執行條件 ){
要執行的東東;
}
當括號裡的條件為 True 的時候,迴圈會不斷進行下去,直到變成 False
break
跳出迴圈的進行
while( 重複執行條件 ){
要執行的東東;
if( 條件 ){
break;
}
}
當 if 裡的條件為 True 的時候,會跳出 ( 結束 ) 迴圈,不再重複執行
continue
跳出此輪迴圈的進行
while( 重複執行條件 ){
要執行的東東;
if( 條件 ){
continue;
}
}
當 if 裡的條件為 True 的時候,會跳出此輪迴圈,執行下一輪
迴圈都可以 break 跟 continue
while
練習
#include <iostream>
using namespace std;
int main(void) {
while(true){
cout << 1;
}
}
會輸出多少個 1 呢?
答:無限個
這是一個無窮迴圈
while
練習
#include <iostream>
using namespace std;
int main(void) {
int num = 10;
while(num > 0){
cout << num << ' ';
num -= 2;
if(num < 4) break;
if(num % 3 == 0) {
num -= 3;
continue;
}
}
}
會輸出什麼呢?
10 8 3
while
#include <iostream>
using namespace std;
int main(void) {
int num = 10;
while(num > 0){
cout << num << ' ';
num -= 2;
if(num < 4) break;
if(num % 3 == 0) {
num -= 3;
continue;
}
}
}
num = 10 > 0
Round 1
輸出 10 & num - 2 = 8
num = 8 > 0
Round 2
輸出 8 & num - 2 = 6
num % 3 = 0 -> num - 3 = 3
num = 3 > 0
Round 3
輸出 3 & num - 2 = 1
num = 1 < 4 -> 結束迴圈
do while
do while
先做 ... 再進入迴圈
與 while ( 前測式 ) 不同
do while ( 後測式 ) 會先做事,之後無條件進入迴圈
#include <iostream>
using namespace std;
int main(void) {
int password = 12345;
int num;
do {
cout << "Please enter your password\n";
cin >> num;
} while(num != password);
}
飯粒:
do while
#include <iostream>
using namespace std;
int main(void) {
int password = 12345;
int num;
cout << "Please enter your password\n";
cin >> num;
while(num != password){
cout << "Please enter your password\n";
cin >> num;
}
}
如果是用 while 寫:
要多寫兩行重複的
程式碼看起來不簡潔
do while
用法:
do{
要做的事;
} while( 條件 ); //記得加分號
使用時機:
需要先做某件事後再判斷
飯粒 x2:
#include <iostream>
using namespace std;
int main(void) {
int end_num = 10;
int num;
do {
cout << "Guess a number: ";
cin >> num;
} while(num != end_num);
}
for
for
迴圈計數器
飯粒:
當 n <= 1000,就輸出 n 並 +1
#include <iostream>
using namespace std;
int main(void) {
for(int n = 1; n <= 1000; n++){
cout << n << '\n';
}
}
for
跟 while 不同的是,for 可以明確知道會執行多少次及執行順序
用法:
for(變數; 重複執行條件; 對變數做事){
要執行的東東;
}
for 的括號裡有三個東西,變數跟對變數做事可以不用寫,但分號一定要加
當條件為 True 時會重複執行,直到為 False
for
不加變數 & 不對變數做事
#include <iostream>
using namespace std;
int main(void) {
int i = 0;
for(;i < 10;){
cout << i << '\n';
i++;
}
}
如果少一個分號,編譯器就會報錯
for
巢狀迴圈:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(void) {
for(int i = 1; i < 10; i++){
for(int j = 1; j < 10; j++){
printf("%*d", 3, i*j); //格式化輸出
}
cout << '\n';
}
}
可以印出九九乘法表!
for
巢狀迴圈:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(void) {
for(int i = 1; i < 10; i++){
for(int j = 1; j < 10; j++){
printf("%*d", 3, i*j); //格式化輸出
}
cout << '\n';
}
}
...
i = 1
j = 1
j = 2
...
j = 9
i = 2
j = 1
j = 2
...
j = 9
i = 9
j = 1
j = 2
...
j = 9
practice
zerojudge
按照難度排ㄉ ( 大概
下課!
C++ - 3 - loop
By pomer0
C++ - 3 - loop
- 102