while (表示式) { ... }
當表示式成立就一直執行// 執行 10 次
int n = 1;
while (n <= 10) { // 若輸出次數 < 10 則繼續輸出
std::cout << "我愛資芽" << std::endl;
n++; // 輸出次數加一, n = n + 1;
}
// 執行 10 次
int n = 10;
while (n > 0) { // 若剩餘次數 > 0 則繼續輸出
std::cout << "我愛資芽" << std::endl;
n--; // 剩餘次數減一
}
int n = 10;
while (n > 0) { // 若剩餘次數 > 0 則繼續輸出
std::cout << "我愛資芽" << std::endl;
n--;
}
while (n != 0) { // 若剩餘次數 != 0 則繼續輸出
while (n) { // 若剩餘次數 != 0 則繼續輸出
++a
會將 a
的值加一,並回傳新值a++
會回傳原有的值,再將 a
值加一++前置遞增 | 後置遞增++ | |
---|---|---|
原始運算式 |
|
|
遞增運算式 |
|
|
結果 |
|
|
遞增運算子 | 算術運算子 | |
---|---|---|
運算 |
|
|
結果 |
|
|
// 執行 ? 次
int n = 1;
while (n++ <= 10) { // 先判斷完,再 n = n + 1
std::cout << "我愛資芽" << std::endl;
}
// 執行 ? 次
int n = 10;
while (n-- > 0) { // 先判斷完,再 n = n - 1
std::cout << "我愛資芽" << std::endl;
}
int n = 10;
while (n--) { // 先判斷完 n != 0,再 n = n - 1
std::cout << "我愛資芽" << std::endl;
}
|
|
|
|
S 執行次數 | n 次 | n 次 | n - 1 次 |
迴圈結束後 n 的值 | 0 | -1 | 0 |
if (表示式) { ... }
if (表示式) { ... } else { ... }
while (表示式) { ... }
do { ... } while (表示式);
for (初始式; 表示式; 迭帶式) { ... }
break
和 continue
for (初始式; 表示式; 迭帶式) { ... }
for (int i = 1; i <= 10; ++i) {
std::cout << "我愛資芽" << std::endl;
}
相當於:
|
|
如何決定使用 for
或 while
迴圈,按特性:
警示型迴圈 (while
):該迴圈的結束條件是在某不明確事件,例如輸入到 -1
(警示值)、讀入到檔案結束 (eof)
計數型迴圈 (for
):該迴圈在執行明確次數後會結束的話
用 for 來完成 209 - σ.σ 吧!
for (int i = 1; i <= 9; ++i) {
for (int j = 1; j <= 9; ++j) {
cout << i << " * " << j << " = " << i*j << '\t';
}
cout << endl;
}
double l[100], w[100], h[100], volume = 0;
for (int i = 0; i < n; ++i) {
volume = volume + l[i] * w[i] * h[i];
}
可以使用「,
」運算子,加上多重初始式、迭代式
for (int i = 0, j = 100; i < 10 && j < 5; ++i, ++j) {
std::cout << i << " " << j << std::endl;
}
while (true) {
std::cout << "我愛資芽" << std::endl;
}
for ( ; ; ) {
std::cout << "我愛資芽" << std::endl;
}
break
強制跳離迴圈continue
跳至下一次迴圈開始// 判斷 n 是否為質數
int n = 87;
bool is_prime = true;
for (int i = 2; i < n; ++i) {
if (n % i == 0) {
is_prime = false;
break; // 如果是合數,就不用再檢驗
}
}
// 輸出 1 ~ 10 的奇數
for (int i = 1; i <= 10; ++i) {
if (i % 2 == 0) continue; // 跳過偶數
std::cout << i << std::endl;
}