官方網站打不開怎么回事廣州企業(yè)推廣
C++程序流程結構詳解
一、選擇結構
選擇結構根據條件判斷決定程序執(zhí)行路徑。
1. if 語句
語法形式 | 說明 | 執(zhí)行條件 |
---|---|---|
if (條件) {語句} | 單分支選擇結構 | 條件為真時執(zhí)行 |
if (條件) {...} else {...} | 雙分支選擇結構 | 條件為真/假分別執(zhí)行不同語句 |
if (條件1) {...} else if (條件2) {...} else {...} | 多分支選擇結構 | 按順序檢查條件,執(zhí)行第一個滿足條件的語句塊 |
示例代碼:
int score = 85;
if (score >= 90) {cout << "優(yōu)秀" << endl;
} else if (score >= 80) {cout << "良好" << endl; // 輸出此項
} else if (score >= 60) {cout << "及格" << endl;
} else {cout << "不及格" << endl;
}
2. switch 語句
用于多分支選擇,適合離散值判斷
組件 | 說明 |
---|---|
switch (表達式) | 表達式必須是整型、枚舉或字符類型 |
case 常量: | 匹配表達式結果的入口點 |
break; | 跳出switch結構(防止貫穿) |
default: | 所有case都不匹配時執(zhí)行的代碼塊 |
示例代碼:
char grade = 'B';
switch (grade) {case 'A': cout << "90-100分" << endl;break;case 'B': cout << "80-89分" << endl; // 輸出此項break;case 'C': cout << "70-79分" << endl;break;default:cout << "不及格" << endl;
}
注意:忘記
break
會導致"貫穿"現象,程序會繼續(xù)執(zhí)行后續(xù)case的語句。
二、循環(huán)結構
循環(huán)結構用于重復執(zhí)行代碼塊。
1. while 循環(huán)
先判斷條件,再執(zhí)行循環(huán)體
語法 | 特點 |
---|---|
while (條件) {循環(huán)體} | 循環(huán)次數不確定時使用 可能一次都不執(zhí)行 |
示例代碼:
int count = 0;
while (count < 5) {cout << count << " "; // 輸出:0 1 2 3 4count++;
}
2. do-while 循環(huán)
先執(zhí)行一次循環(huán)體,再判斷條件
語法 | 特點 |
---|---|
do {循環(huán)體} while (條件); | 至少執(zhí)行一次循環(huán)體 結尾必須有分號 |
示例代碼:
int num = 10;
do {cout << num << " "; // 輸出:10num++;
} while (num < 5); // 條件不滿足但仍執(zhí)行一次
3. for 循環(huán)
最常用的循環(huán)結構,包含初始化、條件判斷和更新
語法 | 組成部分 |
---|---|
for (初始化; 條件; 更新) {循環(huán)體} | 初始化:循環(huán)前執(zhí)行一次 條件:每次迭代前檢查 更新:每次迭代后執(zhí)行 |
示例代碼:
for (int i = 0; i < 5; i++) {cout << i << " "; // 輸出:0 1 2 3 4
}// 嵌套循環(huán)示例:打印九九乘法表
for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {cout << j << "×" << i << "=" << i*j << "\t";}cout << endl;
}
4. 范圍-based for 循環(huán) (C++11)
簡化容器和數組的遍歷
語法 | 適用場景 |
---|---|
for (元素類型 變量 : 容器) {循環(huán)體} | 遍歷數組、vector、list等容器 只讀訪問 |
for (auto& 變量 : 容器) {循環(huán)體} | 可修改容器元素 自動類型推導 |
示例代碼:
vector<int> nums = {1, 2, 3, 4, 5};// 只讀遍歷
for (int num : nums) {cout << num << " "; // 輸出:1 2 3 4 5
}// 修改元素
for (auto& num : nums) {num *= 2; // 每個元素乘以2
}
三、跳轉語句
跳轉語句用于改變程序執(zhí)行流程。
1. break 語句
作用 | 適用場景 |
---|---|
終止當前循環(huán) | while, do-while, for循環(huán)內部 |
跳出switch語句 | 防止case貫穿 |
示例代碼:
// 在循環(huán)中遇到特定條件退出
for (int i = 0; i < 10; i++) {if (i == 5) {break; // 當i=5時跳出循環(huán)}cout << i << " "; // 輸出:0 1 2 3 4
}
2. continue 語句
作用 | 說明 |
---|---|
跳過本次循環(huán)剩余代碼 | 直接進入下一次循環(huán)迭代 |
不影響循環(huán)控制變量更新 | for循環(huán)的"更新"部分仍會執(zhí)行 |
示例代碼:
// 跳過奇數,只輸出偶數
for (int i = 0; i < 10; i++) {if (i % 2 != 0) {continue; // 跳過奇數}cout << i << " "; // 輸出:0 2 4 6 8
}
3. goto 語句
語法 | 注意事項 |
---|---|
goto 標簽; | 無條件跳轉到標簽處 |
標簽: | 定義跳轉目標 |
慎用!會使程序結構混亂,難以維護 |
示例代碼:
int count = 0;START: // 標簽定義
cout << count << " ";
count++;if (count < 5) {goto START; // 跳轉到START標簽
}
// 輸出:0 1 2 3 4
4. return 語句
作用 | 說明 |
---|---|
從函數中退出 | 可返回一個值(非void函數) |
結束程序執(zhí)行 | main函數中的return結束整個程序 |
示例代碼:
int add(int a, int b) {return a + b; // 返回結果并退出函數
}int main() {int result = add(3, 4); // result = 7return 0; // 結束程序
}
四、流程控制綜合示例
#include <iostream>
#include <vector>
using namespace std;int main() {// 選擇結構示例int age = 25;if (age >= 18) {cout << "成年人" << endl;} else {cout << "未成年人" << endl;}// 循環(huán)結構示例vector<int> numbers = {10, 20, 30, 40, 50};int sum = 0;// 使用范圍for循環(huán)計算總和for (int num : numbers) {sum += num;}cout << "總和: " << sum << endl; // 輸出: 總和: 150// 跳轉語句示例cout << "查找第一個3的倍數: ";for (int i = 1; i <= 10; i++) {if (i % 3 == 0) {cout << i << endl; // 輸出: 3break; // 找到后立即退出循環(huán)}}// continue示例: 跳過特定值cout << "1-10中非3的倍數: ";for (int i = 1; i <= 10; i++) {if (i % 3 == 0) {continue; // 跳過3的倍數}cout << i << " "; // 輸出: 1 2 4 5 7 8 10}cout << endl;return 0;
}
運行結果:
成年人
總和: 150
查找第一個3的倍數: 3
1-10中非3的倍數: 1 2 4 5 7 8 10
五、最佳實踐與注意事項
-
選擇結構
- 簡單條件用if-else,多離散值用switch
- switch語句必須有break防止貫穿
- 避免深層嵌套(超過3層考慮重構)
-
循環(huán)結構
- 明確循環(huán)次數用for,不確定用while
- 循環(huán)變量作用域最小化(C++99后for循環(huán)變量作用域在循環(huán)內)
- 警惕死循環(huán)(確保循環(huán)條件會變?yōu)閒alse)
-
跳轉語句
- 優(yōu)先使用break/continue替代goto
- break只能跳出一層循環(huán)(嵌套循環(huán)需使用標志變量)
- continue不適用于switch語句
-
性能考量
- 循環(huán)內避免重復計算(將不變計算提到循環(huán)外)
- 減少循環(huán)內部的條件判斷
- 范圍for循環(huán)比傳統(tǒng)for循環(huán)更高效(編譯器優(yōu)化)
-
可讀性建議
- 復雜條件表達式用括號明確優(yōu)先級
- 循環(huán)體超過10行考慮提取為函數
- 避免在循環(huán)體內修改循環(huán)計數器(for循環(huán)的"更新"部分除外)
掌握這些流程控制結構,能夠構建邏輯清晰、高效可靠的C++程序,為后續(xù)學習面向對象和高級特性打下堅實基礎。