跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C 语言 while 循环
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C语言While循环 = '''While循环'''是C语言中最基础且强大的控制流结构之一,用于在满足特定条件时重复执行一段代码块。它属于“前测试循环”(即先检查条件再执行循环体),适用于不确定循环次数但明确终止条件的场景。 == 语法结构 == While循环的基本语法如下: <syntaxhighlight lang="c"> while (condition) { // 循环体:条件为真时重复执行的代码 } </syntaxhighlight> * '''condition''':布尔表达式,若结果为非零(真),则执行循环体;否则退出循环。 * '''循环体''':可包含任意C语句,通常包含修改条件变量的操作以避免无限循环。 == 执行流程 == <mermaid> flowchart TD A[开始] --> B{条件为真?} B -- 是 --> C[执行循环体] C --> B B -- 否 --> D[退出循环] </mermaid> == 基础示例 == === 示例1:计数循环 === 以下代码演示打印数字1到5: <syntaxhighlight lang="c"> #include <stdio.h> int main() { int i = 1; while (i <= 5) { printf("%d\n", i); i++; // 修改条件变量 } return 0; } </syntaxhighlight> '''输出:''' <pre> 1 2 3 4 5 </pre> === 示例2:用户输入验证 === While循环常用于输入验证: <syntaxhighlight lang="c"> #include <stdio.h> int main() { int number; printf("输入一个正数:"); scanf("%d", &number); while (number <= 0) { printf("无效输入!请重新输入:"); scanf("%d", &number); } printf("你输入的是:%d\n", number); return 0; } </syntaxhighlight> '''交互示例:''' <pre> 输入一个正数:-3 无效输入!请重新输入:0 无效输入!请重新输入:5 你输入的是:5 </pre> == 高级应用 == === 嵌套While循环 === While循环可嵌套以实现复杂逻辑。例如打印乘法表: <syntaxhighlight lang="c"> #include <stdio.h> int main() { int i = 1; while (i <= 3) { int j = 1; while (j <= 3) { printf("%d x %d = %d\t", i, j, i*j); j++; } printf("\n"); i++; } return 0; } </syntaxhighlight> '''输出:''' <pre> 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 </pre> === 无限循环与中断 === 通过<code>break</code>和<code>continue</code>控制流程: <syntaxhighlight lang="c"> #include <stdio.h> int main() { while (1) { // 无限循环 int num; printf("输入数字(0退出):"); scanf("%d", &num); if (num == 0) break; // 退出循环 if (num % 2 == 0) continue;// 跳过偶数 printf("处理奇数:%d\n", num); } return 0; } </syntaxhighlight> == 数学建模 == While循环可表达为: <math> \text{while } P(c) \text{ do } S \equiv \text{if } P(c) \text{ then } (S; \text{while } P(c) \text{ do } S) </math> 其中: * <math>P(c)</math>为条件表达式 * <math>S</math>为循环体语句 == 常见错误 == * '''忘记更新条件变量''':导致无限循环 <syntaxhighlight lang="c"> while (x < 10) { printf("%d", x); // x未改变,循环永不终止 } </syntaxhighlight> * '''误用分号''':使循环体为空 <syntaxhighlight lang="c"> while (x < 10); // 注意结尾分号! { printf("%d", x++); } </syntaxhighlight> == 性能考量 == * While循环的效率与等效的for循环相同 * 在编译器优化下,简单循环可能被展开(loop unrolling) * 避免在条件中调用复杂函数,例如: <syntaxhighlight lang="c"> while (compute_intensive_function()) { ... } // 不推荐 </syntaxhighlight> == 实际应用案例 == === 案例:读取文件直到末尾 === <syntaxhighlight lang="c"> #include <stdio.h> int main() { FILE *file = fopen("data.txt", "r"); if (file == NULL) return 1; char buffer[256]; while (fgets(buffer, sizeof(buffer), file) != NULL) { printf("%s", buffer); } fclose(file); return 0; } </syntaxhighlight> === 案例:游戏主循环 === <syntaxhighlight lang="c"> int game_running = 1; while (game_running) { process_input(); update_game_state(); render_graphics(); if (player_quit) game_running = 0; } </syntaxhighlight> == 总结 == While循环是C语言中实现条件重复的核心工具,特点是: * 适合未知迭代次数的场景 * 必须显式管理循环变量 * 可通过<code>break</code>/<code>continue</code>精细控制 * 与<code>do-while</code>形成互补(后者保证至少执行一次) 掌握While循环是理解更复杂控制结构(如嵌套循环、状态机)的基础。 [[Category:编程语言]] [[Category:C]] [[Category:C 语言控制流]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)