C++控制结构
目录
✨前言✨
本系列文章目的在于将C++的基础内容完全夯实,最终目的是为后期的深度学习在算法上有一定的铺垫,前期在学习数学的过程中也会有很大的帮助,相对于python来说C++有自身的优势,文末会有 C++的优势对比于python的维度点说明,所以我这里先写了C++的用法说明,后续会有Python的,各自有各自的优势,我们要根据具体的需求来分析使用哪种语言更为方便,其它的语言暂时不在考虑范畴之内,我们的目标是AI深度学习。
前置环境与代码结构文章:
整体文章目录:入门 C++ 课程目录
📚本篇目标
1. 熟练使用三种条件语句实现分支逻辑
2. 理解不同循环结构的执行流程与应用场景
3. 掌握跳转语句对程序流程的控制方法
4. 能够组合控制结构解决复杂问题
🔥重难点说明
重点突破:
- if-else 多层嵌套的缩进规范
- switch-case 的穿透现象与break使用
- for循环三要素(初始化/条件/迭代)的配合
- break与continue的本质区别
难点攻克:
- 范围for循环对容器的要求(C++11)
- do-while循环的至少一次执行特性
- goto语句的合理使用场景
📖学习正文
1. 条件语句
if-else:
// 单分支
if(score >= 60) {
cout << "及格";
}
// 双分支
if(temp > 100) {
cout << "危险";
} else {
cout << "安全";
}
// 多分支
if(grade == 'A') {
// ...
} else if(grade == 'B') {
// ...
} else {
// ...
}
switch 精准匹配:
switch(weekday) {
case 1:
cout << "Monday";
break;
case 2:
cout << "Tuesday";
break;
// ...
default:
cout << "Invalid";
}
2. 循环语句
while 先验循环:
int i = 0;
while(i < 5) {
cout << i++;
} // 输出0-4
do-while 后验循环:
int j = 5;
do {
cout << j--;
} while(j > 0); // 输出5-1
for 精密控制:
// 传统for
for(int k=0; k<5; k+=2) {
cout << k;
} // 输出0 2 4
// 范围for(C++11)
vector<int> nums{1,3,5};
for(int num : nums) {
cout << num;
}
3. 跳转语句
流程控制器三剑客:
// break示例
while(true) {
if(condition) break;
}
// continue示例
for(int i=0; i<10; i++) {
if(i%2) continue;
cout << i; // 输出偶数
}
// goto示例(慎用)
goto label;
// ...
label:
cout << "跳转至此";
💻练习题
单选题-5
1、下列代码输出结果:
int x=3;
if(x=5) cout << x;
A) 3 B) 5 C) 编译错误 D) 无输出
2、switch语句中case后的表达式可以是:
A) 浮点数 B) 字符串 C) 整型常量 D) 变量
3、以下循环执行次数:
int i=5;
do {
i--;
} while(i>5);
A) 0 B) 1 C) 5 D) 无限
多选题-1
哪些情况会导致无限循环?(多选)
A) while(1)
B) for(;;)
C) do{}while(0)
D) for(int i=0; i<5;)
判断题-2
- do-while的条件判断在循环体执行之后( )
- break可以跳出所有嵌套循环( )
代码题-1
// 使用循环计算n的阶乘
int factorial(int n) {
int result = 1;
for(int i=1; i<=n; ++i) {
result *= i;
}
return result;
}
📝答案解析
单选题
- B) 5(if条件中使用赋值运算符)
- C) 整型常量(case标签必须为整型常量表达式)
- B) 1(do-while至少执行一次)
多选题
- A、B、D(C选项条件为false只执行一次)
判断题
- √
- ×(只能跳出当前层循环)
C++的优势对比于python的维度点说明
对比维度 | C++ 优势 | Python 情况 |
---|---|---|
性能效率 | 1. 执行速度快:编译型语言,将代码编译为机器码,处理大量数据、复杂算法时效率高,能充分利用硬件资源。 2. 内存管理精细:允许程序员直接管理内存,精确控制分配和释放,优化内存使用,适合对内存要求苛刻的系统。 | 1. 执行速度慢:解释型语言,代码逐行解释执行,在处理大规模数据和复杂计算时性能较差。 2. 内存管理自动化:Python 有自动的垃圾回收机制,虽然方便但可能导致内存使用不够精细,在内存紧张的场景下可能出现问题。 |
底层控制能力 | 1. 硬件访问能力强:可直接访问计算机硬件资源,如寄存器、内存地址等,便于与底层硬件高效交互,适用于驱动程序、嵌入式系统开发。 2. 系统级编程优势:在操作系统、编译器、数据库管理系统等系统软件开发中,能与底层系统更好交互,实现资源精细管理和控制,提升系统性能和稳定性。 | 底层控制能力弱:Python 主要用于高层级的应用开发,对底层硬件的直接访问能力有限,在系统级编程方面不够灵活和高效。 |
语言特性 | 1. 强类型语言:编译时进行严格类型检查,有助于发现早期错误,提高代码稳定性和可靠性,减少运行时类型不匹配错误。 2. 支持多种编程范式:支持面向对象、泛型、函数式等多种编程范式,开发者可根据问题和需求灵活选择。 | 1. 动态类型语言:类型检查在运行时进行,虽然编写代码更灵活,但可能在运行时出现类型相关的错误,代码的稳定性和可维护性相对较弱。 2. 编程范式相对有限:主要以面向对象和函数式编程为主,泛型编程的支持不如 C++ 强大。 |
可移植性 | 1. 跨平台能力:编写的代码可在不同操作系统上编译运行,只要有相应编译器和运行时环境,适合开发跨平台应用。 2. 库的可移植性:许多开源库和框架(如 Boost、Qt)具有良好可移植性,可在不同平台使用,减少跨平台开发工作量。 | 1. 跨平台性依赖解释器:Python 代码的跨平台性依赖于 Python 解释器,虽然大多数情况下能在不同操作系统上运行,但在一些涉及底层系统调用的场景下可能会有兼容性问题。 2. 部分库存在兼容性问题:虽然 Python 有丰富的库,但部分库在不同平台上的表现和兼容性可能存在差异。 |
生态系统和工具链 | 1. 成熟的开发工具:有 Visual Studio、CLion、Eclipse 等成熟开发工具和集成开发环境,提供强大代码编辑、调试、性能分析等功能,提高开发效率。 2. 丰富的库资源:拥有大量专业级库,如用于数学计算的 LAPACK、图形处理的 OpenGL、网络编程的 ACE 等,为专业领域开发提供支持。 | 1. 开发工具相对简单:Python 的开发工具(如 PyCharm、VS Code 等)功能相对侧重于代码编辑和基本调试,在一些复杂的性能分析和底层调试方面不如 C++ 的开发工具强大。 2. 库更侧重于高层应用:Python 的库主要用于数据分析、机器学习、Web 开发等高层应用场景,在底层系统编程和高性能计算方面的专业库相对较少。 |
安全性和稳定性 | 1. 资源管理安全:通过智能指针等机制,一定程度上保证资源安全管理,避免内存泄漏和悬空指针问题,提升程序稳定性和安全性。 2. 代码审查严格:语法相对复杂,在大型项目中严格的代码审查和规范可确保代码质量和安全性,减少潜在漏洞和风险。 | 1. 资源管理自动化存在隐患:自动垃圾回收机制可能导致一些资源管理问题,例如循环引用可能会造成内存泄漏,虽然 Python 有解决方案,但增加了复杂性。 2. 代码灵活性带来风险:动态类型和简洁的语法使得代码编写容易,但也可能导致代码的可读性和可维护性下降,增加了出现安全漏洞的风险。 |