跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C++ 循环
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C++循环 = '''循环'''是C++控制流的核心结构之一,允许程序重复执行一段代码,直到满足特定条件。循环在自动化重复任务、遍历数据结构和实现算法时至关重要。C++提供了三种主要循环结构:'''for循环'''、'''while循环'''和'''do-while循环'''。 == 循环类型 == === for循环 === for循环通常用于已知迭代次数的场景,语法结构如下: <syntaxhighlight lang="cpp"> for (初始化; 条件; 更新) { // 循环体 } </syntaxhighlight> '''示例:打印1到5的数字''' <syntaxhighlight lang="cpp"> #include <iostream> using namespace std; int main() { for (int i = 1; i <= 5; i++) { cout << i << " "; } return 0; } </syntaxhighlight> '''输出:''' <pre>1 2 3 4 5</pre> '''执行流程:''' <mermaid> flowchart TD A[初始化 int i=1] --> B{条件判断 i<=5} B -- 真 --> C[执行循环体] C --> D[更新 i++] D --> B B -- 假 --> E[退出循环] </mermaid> === while循环 === while循环在条件为真时持续执行,适合不确定迭代次数的场景: <syntaxhighlight lang="cpp"> while (条件) { // 循环体 } </syntaxhighlight> '''示例:用户输入验证''' <syntaxhighlight lang="cpp"> #include <iostream> using namespace std; int main() { int password; cout << "Enter password (1234): "; cin >> password; while (password != 1234) { cout << "Wrong! Try again: "; cin >> password; } cout << "Access granted!"; return 0; } </syntaxhighlight> '''输出(示例交互):''' <pre> Enter password (1234): 1111 Wrong! Try again: 1234 Access granted! </pre> === do-while循环 === 与while类似,但保证至少执行一次循环体: <syntaxhighlight lang="cpp"> do { // 循环体 } while (条件); </syntaxhighlight> '''示例:菜单系统''' <syntaxhighlight lang="cpp"> #include <iostream> using namespace std; int main() { char choice; do { cout << "\nMenu:\n1. Start\n2. Options\n3. Exit\nChoice: "; cin >> choice; // 处理选择... } while (choice != '3'); return 0; } </syntaxhighlight> == 循环控制语句 == {| class="wikitable" |+ 控制语句比较 ! 语句 !! 作用 !! 示例 |- | <code>break</code> || 立即退出当前循环 || <code>if (i == 3) break;</code> |- | <code>continue</code> || 跳过当前迭代 || <code>if (i%2 == 0) continue;</code> |- | <code>goto</code> || 跳转到标签位置(慎用) || <code>goto label;</code> |} == 嵌套循环 == 循环可以多层嵌套,常用于处理多维数据结构: '''示例:乘法表''' <syntaxhighlight lang="cpp"> #include <iostream> using namespace std; int main() { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { cout << i*j << "\t"; } cout << endl; } return 0; } </syntaxhighlight> == 性能考量 == 循环效率直接影响程序性能,需注意: * 减少循环内部的计算量 * 避免在循环条件中进行复杂运算 * 考虑循环展开(Loop Unrolling)优化 '''时间复杂度分析示例:''' <math> O(n) = \sum_{i=1}^{n} 1 = n </math> == 实际应用案例 == '''案例:数据分析中的移动平均计算''' <syntaxhighlight lang="cpp"> #include <iostream> #include <vector> using namespace std; vector<double> movingAverage(const vector<double>& data, int window) { vector<double> result; for (size_t i = 0; i <= data.size() - window; i++) { double sum = 0; for (int j = 0; j < window; j++) { sum += data[i + j]; } result.push_back(sum / window); } return result; } int main() { vector<double> stockPrices = {45.3, 46.2, 47.8, 48.1, 47.5, 46.9}; auto averages = movingAverage(stockPrices, 3); for (double avg : averages) { cout << avg << " "; } return 0; } </syntaxhighlight> '''输出:''' <pre>46.4333 47.3667 47.8 47.5 </pre> == 常见错误与调试 == * '''无限循环''':忘记更新循环变量 * '''差一错误''':错误的条件边界 * '''类型不匹配''':循环变量与条件类型不一致 使用调试器逐步执行循环是排查问题的有效方法。 == 最佳实践 == # 使用有意义的循环变量名(如<code>row</code>, <code>col</code>而非<code>i</code>, <code>j</code>) # 保持循环体简洁(必要时提取为函数) # 添加循环不变量的断言检查 # 考虑使用范围for循环(C++11起)简化集合遍历 [[Category:编程语言]] [[Category:C++]] [[Category:C++ 控制流]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)