引言
闯过C++基础"新手村"(注释、变量、数据类型...),是否已摩拳擦掌,渴望指挥程序执行更复杂的任务?流程控制,就是赋予程序逻辑与生命的核心技能! 本指南作为《彻底吃透C++基础核心》的进阶篇章,将带你深度解锁"选择结构"(if/三目/switch)、"循环结构"(while/do-while/for/嵌套)与"跳转语句"(break/continue/goto)三大核心武器库。
告别代码的平铺直叙,你将学会:如何让程序智能决策(成绩精准评级?Switch优化有妙招!)、如何高效重复(快速判断素数?循环优化是关键!)、如何精准控制执行流(何时中断循环?Break/Continue怎么选?)。我们更将剖析循环效率差异,揭示常见陷阱,并融入最佳实践建议,助你写出高效、优雅、易维护的C++代码。
掌握流程控制,方能真正驾驭程序逻辑! 准备好升级你的编程战力了吗?这份"新手村通关秘籍",将是你攻克C++核心堡垒的制胜法宝!
最后,如果大家喜欢我的创作风格 ,请大家多多关注up主,你们的支持就是我创作最大的动力!如果各位观众老爷觉得我哪些地方需要改进,请一定在评论区告诉我,马上改!在此感谢大家了。
各位观众老爷,本文通俗易懂,快速熟悉C++,收藏本文,关注up不迷路,后续将持续分享C++纯干货(请观众老爷放心,绝对又干又通俗易懂)。请多多关注、收藏、评论,评论区等你~~~
文章目录
- 引言
- 一、选择结构
-
- [1.1 if 语句](#1.1 if 语句)
- [1.2 三目运算符](#1.2 三目运算符)
- [1.3 switch 语句](#1.3 switch 语句)
- 二、循环结构
-
- [2.1 while 循环](#2.1 while 循环)
- [2.2 do-while 循环](#2.2 do-while 循环)
- [2.3 for 循环](#2.3 for 循环)
- [2.4 嵌套循环](#2.4 嵌套循环)
- 三、跳转语句
-
- [3.1 break 语句](#3.1 break 语句)
- [3.2 continue 语句](#3.2 continue 语句)
- [3.3 goto 语句](#3.3 goto 语句)
- 四、综合应用案例
-
- [4.1 成绩评级系统(switch优化)](#4.1 成绩评级系统(switch优化))
- [4.2 素数判断(循环优化)](#4.2 素数判断(循环优化))
- [4.3 循环效率对比](#4.3 循环效率对比)
- 五、最佳实践建议
正 文
一、选择结构
根据条件执行不同的代码分支。
1.1 if 语句
1. 基本形式:
cpp
// 单行格式
if (条件) { 代码块 }
// 多行格式
if (条件) { 代码块 }
else { 代码块 }
// 多条件格式
if (条件1) { 代码块 }
else if (条件2) { 代码块 }
else { 代码块 }
2. 关键特性:
- 条件表达式应为布尔类型(非零为真,零为假);
- 代码块若只有单条语句,花括号可省略(但不推荐);
- 支持多层嵌套;
3. 优化技巧:
cpp
// 使用逻辑运算符简化条件
if (score >= 90 && score <= 100) {...}
// 避免深层嵌套
if (score < 60) goto fail;
// ... 其他处理
fail:
cout << "不及格";
1.2 三目运算符
1. 语法 :条件 ? 表达式1 : 表达式2
- 如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
- 如果表达式1的值为假,执行表达式3,并返回表达式3的结果;
2. 特性:
- 返回表达式结果,可直接赋值;
- C++中返回的是变量(可继续赋值);
cpp
// 找最大值
int max = (a > b) ? a : b;
// 条件赋值
(a > b ? a : b) = 100; // 将较大值设为100
3. 对比 if-else:
cpp
// 等价于
if (a > b) max = a;
else max = b;
1.3 switch 语句
1. 作用: 执行多条件分支语句;
2. 语法:
cpp
switch(整型/字符型表达式) {
case 值1: 代码; break;
case 值2: 代码; break;
...
default: 代码; break;
}
3. 重要规则:
- case 必须是常量表达式;
- 必须有 break 防止穿透;
- default 处理未匹配情况;
4. 优化技巧:
cpp
// 合并相同处理的case
switch(month) {
case 1: case 3: case 5: // 31天的月份
days = 31;
break;
case 2: // 特殊处理2月
days = isLeapYear ? 29 : 28;
break;
// ...
}
5. if vs switch:
特性 | if 语句 | switch 语句 |
---|---|---|
条件类型 | 任意布尔表达式 | 整型/字符型 |
区间判断 | 支持 | 不支持 |
执行效率 | 相对较低 | 高(跳转表) |
代码可读性 | 简单条件时清晰 | 多分支时更清晰 |
二、循环结构
重复执行代码块直到条件不满足。
2.1 while 循环
1. 语法 :while (条件) { 循环体 }
2. 特点:
- 先判断条件,再执行循环;
- 适合不确定循环次数的场景;
cpp
// 循环打印数字1 ~ 9
while (num < 10)
{
cout << num << endl;
num++;
}
2.2 do-while 循环
1. 语法 :do { 循环体 } while (条件)
2. 特点:
- 与while的区别在于它会先执行一次循环语句,在判断循环条件;
- 至少执行一次循环;
cpp
// 输入验证
int input;
do {
cout << "请输入1-100的数字: ";
cin >> input;
} while (input < 1 || input > 100);
2.3 for 循环
1. 语法 :for (初始化; 条件; 更新) { 循环体 }
cpp
//for循环,从0到9打印
for (int i = 1; i <= 100; i++)
{
//找特殊数字
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)
{
cout << "敲桌子" << endl;
}
else
{
cout << i << endl;
}
}
2. 执行流程:
- 执行初始化语句;
- 检查条件 → 真则执行循环体;
- 执行更新语句;
- 重复步骤2-3;
3. 高级用法:
cpp
// 多变量初始化
for (int i = 0, j = 10; i < j; i++, j--) {...}
// 范围循环(C++11)
int arr[] = {1,2,3,4,5};
for (int num : arr) {
cout << num << " ";
}
2.4 嵌套循环
应用场景:
- 多维数据处理;
- 矩阵运算;
- 排列组合问题;
cpp
// 打印九九乘法表(优化版)
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
// 对齐输出
cout << j << "×" << i << "="
<< setw(2) << i*j << " ";
}
cout << endl;
}
三、跳转语句
改变程序执行流程。
3.1 break 语句
1. 作用:立即终止当前循环或switch语句,跳出循环结构。
2. 应用场景:
- switch中防止case穿透;
- 循环中满足条件时提前退出;
- 嵌套循环中跳出内层循环;
cpp
// 查找数组元素
int arr[] = {2,4,6,8,10};
int target = 8;
for (int i = 0; i < 5; i++) {
if (arr[i] == target) {
cout << "找到目标,位置:" << i;
break;
}
}
3.2 continue 语句
1. 作用:跳过本次循环剩余代码,进入下一次迭代。
2. 应用场景:
- 过滤特定条件的数据;
- 跳过无效迭代;
cpp
// 打印1-100的奇数
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) continue;
cout << i << " ";
}
3.3 goto 语句
1. 语法 :goto 标签; ... 标签: 代码
- 可以无条件跳转语句;
- 如果标记的名称存在,执行到goto语句时,会跳转到标记的位置;
2. 注意事项:
- 尽量避免使用(降低代码可读性);
- 适用场景:深层嵌套退出、错误处理;
- 标签必须在同一函数内;
cpp
#include<iostream>
using namespace std;
int main()
{
//goto语句
cout << "1、 xxx " << endl;
cout << "2、 xxx " << endl;
goto FLAG;
cout << "3、 xxx " << endl;
cout << "4、 xxx " << endl;
FLAG:
cout << "5、 xxx " << endl;
system("pause");
return 0;
}
四、综合应用案例
4.1 成绩评级系统(switch优化)
cpp
int score;
cout << "请输入成绩(0-100): ";
cin >> score;
switch(score/10) {
case 10: case 9:
cout << "优秀"; break;
case 8:
cout << "良好"; break;
case 7:
cout << "中等"; break;
case 6:
cout << "及格"; break;
default:
cout << "不及格";
}
4.2 素数判断(循环优化)
cpp
bool isPrime(int n) {
if (n <= 1) return false;
if (n == 2) return true;
if (n % 2 == 0) return false;
// 只需检查到sqrt(n)
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0) return false;
}
return true;
}
4.3 循环效率对比
循环类型 | 适用场景 | 性能特点 |
---|---|---|
for | 明确循环次数 | 最优(编译器易优化) |
while | 条件驱动循环 | 中等 |
do-while | 至少执行一次 | 中等 |
范围for | 遍历容器(C++11) | 最优(语法糖) |
五、最佳实践建议
1. 循环优化技巧:
cpp
// 1. 减少循环内计算
int len = array.size(); // 预先计算长度
for (int i = 0; i < len; i++) {...}
// 2. 循环展开
for (int i = 0; i < 100; i += 4) {
process(i);
process(i+1);
process(i+2);
process(i+3);
}
2. 选择结构原则:
- 简单条件 → if
- 多离散值 → switch
- 嵌套超过3层 → 重构为函数
3. 避免常见陷阱:
cpp
// 陷阱1:赋值=代替比较==
if (x = 5) {...} // 总是真
// 陷阱2:switch忘记break
case 1: cout << "1"; // 会继续执行case2
case 2: cout << "2";
// 陷阱3:浮点数精确比较
double a = 0.1 + 0.2;
if (a == 0.3) {...} // 可能为假
4. 代码可读性提升:
cpp
// 使用有意义的布尔变量
bool isPassing = (score >= 60);
bool hasPrerequisite = (completedCourses >= 3);
if (isPassing && hasPrerequisite) {
enrollCourse();
}
流程图解:
顺序结构:A → B → C 选择结构:A → [条件] → 真 → B | → 假 → C 循环结构:A → [条件] → 真 → B → 返回检查 | → 假 → C
结 束 语
能够看到这里的观众老爷,无疑是对up的最大肯定和支持,在此恳求各位观众老爷能够多多点赞、收藏和关注。在这个合集中,未来将持续给大家分享关于C++的多种常见开发实用操作。未来也将继续分享各种实用干货。感谢大家支持!