C++流程控制语句详解:顺序、选择与循环结构
详细讲解了 C++ 流程控制语句,涵盖顺序结构、选择结构(if-else、switch-case)、循环结构(while、do-while、for)、跳转语句(break、continue、return、goto)以及异常处理机制。通过基础示例、应用场景分析及综合猜数字游戏案例,帮助读者掌握构建结构化程序的核心逻辑,提升代码可读性与可维护性。内容包含完整代码示例与练习题,适合初学者系统学习 C++ 控制流。

详细讲解了 C++ 流程控制语句,涵盖顺序结构、选择结构(if-else、switch-case)、循环结构(while、do-while、for)、跳转语句(break、continue、return、goto)以及异常处理机制。通过基础示例、应用场景分析及综合猜数字游戏案例,帮助读者掌握构建结构化程序的核心逻辑,提升代码可读性与可维护性。内容包含完整代码示例与练习题,适合初学者系统学习 C++ 控制流。

本章将深入探讨 C++ 流程控制语句的核心概念和应用。通过学习,你将能够:
顺序结构是最简单的程序控制结构,程序按照代码的书写顺序依次执行。在 C++ 中,大多数程序都是由顺序结构构成的。
让我们通过一个简单的示例来理解顺序结构:
#include <iostream>
#include <string>
int main() {
std::cout << "=== 顺序结构示例 ===" << std::endl;
// 顺序执行的代码块
std::string name;
int age;
double height;
// 输入用户信息
std::cout << "请输入您的姓名:";
std::cin >> name;
std::cout << "请输入您的年龄:";
std::cin >> age;
std::cout << "请输入您的身高 (米):";
std::cin >> height;
// 输出用户信息
std::cout << "\n您的个人信息:" << std::endl;
std::cout << "姓名:" << name << std::endl;
std::cout << "年龄:" << age << "岁" << std::endl;
std::cout << "身高:" << height << "米" << std::endl;
return 0;
}
if 语句是 C++ 中最常用的条件判断语句,用于根据条件的真假执行不同的代码块:
#include <iostream>
int main() {
std::cout << "=== if 语句示例 ===" << std::endl;
int age;
std::cout << "请输入您的年龄:";
std::cin >> age;
if (age >= 18) {
std::cout << "您已经成年,可以参加投票" << std::endl;
}
return 0;
}
if-else 语句用于在条件为真和条件为假时执行不同的代码块:
#include <iostream>
int main() {
std::cout << "=== if-else 语句示例 ===" << std::endl;
int age;
std::cout << "请输入您的年龄:";
std::cin >> age;
if (age >= 18) {
std::cout << "您已经成年,可以参加投票" << std::endl;
} else {
std::cout << "您尚未成年,暂时不能参加投票" << std::endl;
}
return 0;
}
if-else if-else 语句用于处理多个条件判断:
#include <iostream>
int main() {
std::cout << "=== if-else if-else 语句示例 ===" << std::endl;
int score;
std::cout << "请输入您的考试成绩:";
std::cin >> score;
if (score >= 90) {
std::cout << "您的成绩等级:A" << std::endl;
} else if (score >= 80) {
std::cout << "您的成绩等级:B" << std::endl;
} else if (score >= 70) {
std::cout << "您的成绩等级:C" << std::endl;
} else if (score >= 60) {
std::cout << "您的成绩等级:D" << std::endl;
} else {
std::cout << "您的成绩等级:E" << std::endl;
}
return 0;
}
嵌套 if 语句用于处理复杂的条件判断:
#include <iostream>
int main() {
std::cout << "=== 嵌套 if 语句示例 ===" << std::endl;
int age;
bool hasLicense;
std::cout << "请输入您的年龄:";
std::cin >> age;
std::cout << "您是否有驾驶执照 (1 表示有,0 表示没有):";
std::cin >> hasLicense;
if (age >= 18) {
if (hasLicense) {
std::cout << "您可以驾驶车辆" << std::endl;
} else {
std::cout << "您已经成年,但没有驾驶执照,不能驾驶车辆" << std::endl;
}
} else {
std::cout << "您尚未成年,不能驾驶车辆" << std::endl;
}
return 0;
}
switch-case 语句用于根据表达式的值选择执行不同的代码块:
#include <iostream>
int main() {
std::cout << "=== switch-case 语句示例 ===" << std::endl;
int day;
std::cout << "请输入一个数字 (1-7):";
std::cin >> day;
switch (day) {
case 1:
std::cout << "星期一" << std::endl;
break;
case 2:
std::cout << "星期二" << std::endl;
break;
case 3:
std::cout << "星期三" << std::endl;
break;
case 4:
std::cout << "星期四" << std::endl;
break;
case 5:
std::cout << "星期五" << std::endl;
break;
case 6:
std::cout << "星期六" << std::endl;
break;
case 7:
std::cout << "星期日" << std::endl;
break;
default:
std::cout << "输入无效,请输入 1-7 之间的数字" << std::endl;
break;
}
return 0;
}
在使用 switch-case 语句时,需要注意以下几点:
while 循环用于在条件为真时重复执行代码块:
#include <iostream>
int main() {
std::cout << "=== while 循环示例 ===" << std::endl;
int count = 1;
while (count <= 10) {
std::cout << count << " ";
count++;
}
std::cout << std::endl;
return 0;
}
while 循环常用于处理不确定次数的循环操作:
#include <iostream>
int main() {
std::cout << "=== while 循环应用场景示例 ===" << std::endl;
int sum = 0;
int number;
std::cout << "请输入一系列整数,输入 0 结束:" << std::endl;
while (true) {
std::cin >> number;
if (number == 0) {
break;
}
sum += number;
}
std::cout << "输入的整数之和:" << sum << std::endl;
return 0;
}
do-while 循环与 while 循环类似,但它会先执行一次循环体,然后再检查条件:
#include <iostream>
int main() {
std::cout << "=== do-while 循环示例 ===" << std::endl;
int count = 1;
do {
std::cout << count << " ";
count++;
} while (count <= 10);
std::cout << std::endl;
return 0;
}
do-while 循环常用于至少需要执行一次的循环操作:
#include <iostream>
#include <string>
int main() {
std::cout << "=== do-while 循环应用场景示例 ===" << std::endl;
std::string password;
std::string correctPassword = "123456";
do {
std::cout << "请输入密码:";
std::cin >> password;
} while (password != correctPassword);
std::cout << "密码正确,欢迎登录!" << std::endl;
return 0;
}
for 循环是 C++ 中最常用的循环语句,它将初始化、条件判断和迭代放在一起:
#include <iostream>
int main() {
std::cout << "=== for 循环示例 ===" << std::endl;
for (int i = 1; i <= 10; i++) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
for 循环有多种高级用法,包括范围 for 循环(C++11 及以后)和嵌套 for 循环:
#include <iostream>
#include <vector>
int main() {
std::cout << "=== for 循环高级用法示例 ===" << std::endl;
// 范围 for 循环(C++11 及以后)
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::cout << "范围 for 循环: ";
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
// 嵌套 for 循环
std::cout << "嵌套 for 循环:" << std::endl;
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
std::cout << "* ";
}
std::cout << std::endl;
}
return 0;
}
break 语句用于跳出当前循环或 switch 语句:
#include <iostream>
int main() {
std::cout << "=== break 语句示例 ===" << std::endl;
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
continue 语句用于跳过当前循环的剩余部分,直接开始下一次循环:
#include <iostream>
int main() {
std::cout << "=== continue 语句示例 ===" << std::endl;
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
return 语句用于结束函数的执行,并返回一个值(如果函数有返回类型):
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
std::cout << "=== return 语句示例 ===" << std::endl;
int result = add(3, 5);
std::cout << "3 + 5 = " << result << std::endl;
return 0;
}
goto 语句用于无条件跳转到程序的其他位置,但应尽量避免使用,因为它会破坏程序的结构化:
#include <iostream>
int main() {
std::cout << "=== goto 语句示例 ===" << std::endl;
int count = 1;
label:
std::cout << count << " ";
count++;
if (count <= 10) {
goto label;
}
std::cout << std::endl;
return 0;
}
C++ 提供了异常处理机制,用于处理程序运行时的错误:
#include <iostream>
#include <stdexcept>
int divide(int a, int b) {
if (b == 0) {
throw std::invalid_argument("除数不能为零");
}
return a / b;
}
int main() {
std::cout << "=== 异常处理示例 ===" << std::endl;
int x = 10, y = 0;
try {
int result = divide(x, y);
std::cout << "结果:" << result << std::endl;
} catch (const std::invalid_argument& e) {
std::cout << "错误:" << e.what() << std::endl;
} catch (...) {
std::cout << "未知错误" << std::endl;
}
return 0;
}
在使用异常处理时,应遵循以下最佳实践:
让我们通过一个综合案例来应用本章所学的知识:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
std::cout << "=== 猜数字游戏 ===" << std::endl;
// 随机生成一个 1-100 之间的数字
std::srand(std::time(nullptr));
int target = std::rand() % 100 + 1;
int guess;
int attempts = 0;
do {
std::cout << "\n请输入您的猜测 (1-100): ";
std::cin >> guess;
attempts++;
if (guess < 1 || guess > 100) {
std::cout << "请输入 1-100 之间的数字" << std::endl;
continue;
}
if (guess < target) {
std::cout << "太小了,再试试" << std::endl;
} else if (guess > target) {
std::cout << "太大了,再试试" << std::endl;
} else {
std::cout << "恭喜你,猜对了!" << std::endl;
std::cout << "你用了" << attempts << "次尝试" << std::endl;
}
} while (guess != target);
return 0;
}
本章介绍了 C++ 流程控制语句的核心知识,包括:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online