C语言while循环的用法(非常详细,附带实例)

while 是 C 语言中的一种循环控制结构,用于在特定条件为真时重复执行一段代码。

while 循环的语法如下:

while (条件表达式) {
    // 循环体:条件为真时执行的代码
}

  • 条件表达式:返回真(非 0)或假(0)的表达式,决定是否继续循环。
  • 大括号 {}:定义循环体,若只有一行语句,可省略,但建议保留以提高可读性。

while 循环的核心是一个条件表达式,当条件为真(非 0)时,循环体内的代码会反复执行,直到条件变为假(0)。while 循环的运行流程是:

  1. 检查 条件表达式
  2. 若为真,执行循环体,然后返回步骤 1。
  3. 若为假,退出循环,继续执行后续代码。

也就是说,while 循环的逻辑是:“只要条件成立,就继续执行。” 

在 C语言中,while 循环特别适合那些循环次数不固定、依赖条件判断的场景。接下来,我们将深入探讨 while 循环的用法、使用场景以及注意事项。

【实例】简单计数。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int count = 0;while (count < 5) {printf("计数:%d\n", count);count++;}return 0;
}

输出结果:

计数:0
计数:1
计数:2
计数:3
计数:4

count < 5 初始为真,循环体执行 5 次,每次 count 自增,直到 count = 5,条件为假,循环结束。

while常见使用场景

1) 已知次数的循环

虽然 while 更适合动态条件,但也可以用于固定次数的循环。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int i = 1;while (i <= 10) {printf("%d ", i);i++;}printf("\n");return 0;
}

输出结果:

1 2 3 4 5 6 7 8 9 10

2) 累加计算

用 while 实现累加或求和。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int sum = 0, num = 1;while (num <= 100) {sum += num;num++;}printf("1 到 100 的和是:%d\n", sum);return 0;
}

输出结果:

1 到 100 的和是:5050

sum 累加每次的 num,直到 num > 100

3) 输入验证

while 常用于等待用户输入符合条件。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int num;printf("请输入一个正数:");scanf("%d", &num);while (num <= 0) {printf("输入错误,请输入一个正数:");scanf("%d", &num);}printf("你输入的正数是:%d\n", num);return 0;
}

输出结果(示例输入):

请输入一个正数:-5
输入错误,请输入一个正数:0
输入错误,请输入一个正数:3
你输入的正数是:3

C语言do-while循环

C语言还提供 do-while 循环,与 while 的区别是条件后置,至少执行一次循环体:

do {
    // 循环体:先执行一次
} while (条件表达式);

【实例】do-while 用法
/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int num = 0;do {printf("num = %d\n", num);num++;} while (num < 3);return 0;
}

输出结果:

num = 0
num = 1
num = 2

即使初始 num = 0,循环体先执行一次,然后检查条件。

while注意事项

1) 避免死循环

若条件永远为真,会导致死循环。

// 错误示例
while (1) { printf("无限循环\n"); } // 死循环

解决方法:确保条件最终会变为假,或使用 break 跳出。

2) break和continue

break 立即退出循环,continue 跳过本次循环剩余部分。

/**
*  系统学习C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>int main(void) {int i = 0;while (i < 10) {i++;if (i == 3) continue; // 跳过 3if (i == 7) break;    // 在 7 退出printf("%d ", i);}printf("\n");return 0;
}

输出结果:

1 2 4 5 6

3) 条件表达式类型

条件必须返回整数值(非 0 为真,0 为假),避免使用浮点数直接比较。

// 不推荐
float f = 0.1;
while (f < 1.0) { ... } // 浮点误差可能导致问题

总结

while 是 C 语言程序常用的一种循环结构,适合处理条件动态变化的重复任务。

学习 while 循环语句,除了它本身的语法外,你还需要掌握 do-while 变体以及 breakcontinue 的用法,才能灵活控制程序的执行流程。

在 C 语言程序中使用 while 循环语句时,要避免出现死循环的情况。读完本文,恭喜你已经彻底掌握 while 循环语句的用法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.短信登录

1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时&#xff0c;后端会创建一个新的 token 并存入 Redis&#xff0c;但之前登录的 token 还没有过期。这可能会导致以下问题&#xff1a; 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …

需求与技术实现不匹配,如何协调

协调需求与技术实现不匹配问题&#xff0c;需要加强技术参与需求阶段、推动架构与需求同步设计、建立跨职能沟通机制&#xff0c;其中加强技术参与需求阶段是最关键的一步。 需求如果脱离技术实际&#xff0c;就容易导致实现困难、资源浪费甚至项目失败。根据麦肯锡的一项研究&…

java每日精进 5.11【WebSocket】

1.纯Websocket实现消息发送 1.1一对一发送 前端 用户在输入框输入消息内容(sendText) 选择特定接收用户(sendUserId) 点击发送按钮触发handlerSend方法 构造消息内容JSON: {text: "Hello", // 消息内容toUserId: 123 // 目标用户ID } 包装为WebSocket标准格式…

【NextPilot日志移植】params.c解析

params.c 参数说明 params.c 文件的主要作用是定义与 SD卡日志记录 相关的参数。这些参数用于配置日志记录的行为&#xff0c;包括日志记录的时间、内容、存储管理以及加密设置等。 1. UTC 偏移量 (SDLOG_UTC_OFFSET) PARAM_DEFINE_INT32(SDLOG_UTC_OFFSET, 0);用途&#xf…

jFinal 使用 SolonMCP 开发 MCP(拥抱新潮流)

MCP 官方的 java-sdk 目前只支持 java17。直接基于 mcp-java-sdk 也比较复杂。使用 SolonMCP&#xff0c;可以基于 java8 开发&#xff08;像 MVC 的开发风格&#xff09;&#xff0c;且比较简单。 1、SolonMCP 简介 SolonMCP&#xff08;全称&#xff1a;solon-ai-mcp&#…

“端 - 边 - 云”三级智能协同平台的理论建构与技术实现

摘要 随着低空经济与智能制造的深度融合&#xff0c;传统集中式云计算架构在实时性、隐私保护和资源效率上的瓶颈日益凸显。本文提出“端 - 边 - 云”三级智能协同平台架构&#xff0c;以“时空 - 资源 - 服务”三维协同理论为核心&#xff0c;构建覆盖终端感知、边缘计算、云端…

【如何搭建开发环境】

了解java程序 JAVA体系结构 跨平台原理与编译和反编译 如何学习java语言&#xff0c;如何搭建环境 设置JAVA_HOME&#xff0c;指向jdk的安装目录这一级即可。比如我的JDK安装在C:\java\jdk1.8.0_25&#xff0c;那JAVA_HOME的值就是C:\java\jdk1.8.0_25设置Path变量 在Path值后…

LegoGPT,卡内基梅隆大学推出的乐高积木设计模型

LegoGPT 是由卡内基梅隆大学开发的一款创新性乐高积木设计模型&#xff0c;能够根据用户的文本提示生成结构稳固、可组装的乐高模型。该模型基于自回归语言模型和大规模乐高设计数据集进行训练&#xff0c;用户只需输入简单的文字描述&#xff0c;LegoGPT 就能逐步构建出物理稳…

深入理解 NumPy:Python 科学计算的基石

在数据科学、人工智能和科学计算的世界里&#xff0c;NumPy 是一块绕不过去的基石。它是 Python 语言中用于高性能科学计算的基础包&#xff0c;几乎所有的数据分析与机器学习框架&#xff08;如 Pandas、TensorFlow、Scikit-learn&#xff09;都离不开它的支持。 一、什么是 …

Java基础(IO)

所有操作都在内存&#xff0c;不能长时间保存&#xff0c;IO主要在硬盘&#xff0c;可以长时间保存。 一、File类 File类被定义为文件和目录路径名的抽象表示形式&#xff0c;这是因为 File 类既可以表示文件也可以表示目录&#xff0c;他们都通过对应的路径来描述。 提供构…

仿正点原子驱动BMP280气压传感器实例

文章目录 前言 一、寄存器头文件定义 二、设备树文件中添加节点 三、驱动文件编写 四、编写驱动测试文件并编译测试 总结 前言 本文驱动开发仿照正点原子的iic驱动实现&#xff0c;同时附上bmp280的数据手册&#xff0c;可访问下面的链接&#xff1a; BMP280_Bosch(博世…

论坛系统(中-1)

软件开发 编写公共代码 定义状态码 对执⾏业务处理逻辑过程中可能出现的成功与失败状态做针对性描述(根据需求分析阶段可以遇见的问题提前做出定义)&#xff0c;⽤枚举定义状态码&#xff0c;先定义⼀部分&#xff0c;业务中遇到新的问题再添加 定义状态码如下 状态码类型描…

E+H流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯

EH流量计通过Profibus DP主站转Modbus TCP网关与上位机轻松通讯 在现代工业自动化的广阔舞台上&#xff0c;Profibus DP与Modbus TCP这两种通信协议各领风骚&#xff0c;它们在不同的应用场景中发挥着举足轻重的作用。但工业生产的复杂性往往要求不同设备、系统之间能够顺畅沟…

服务器中存储空间不足该怎么办?

服务器作为存储数据信息的重要网络设备&#xff0c;随着企业业务的不断拓展&#xff0c;所需要存储的数据信息也在不断增加&#xff0c;最终会导致服务器中存储空间不足&#xff0c;这不仅会影响到服务器系统性能&#xff0c;还会造成业务无法正常执行&#xff0c;那么&#xf…

C++23 views::chunk_by (P2443R1) 详解

文章目录 引言C23 范围库概述范围视图&#xff08;Range Views&#xff09;范围算法&#xff08;Range Algorithms&#xff09;范围适配器&#xff08;Range Adapters&#xff09; std::views::chunk_by 介绍基本概念特性使用场景 示例代码简单示例自定义谓词示例 总结 引言 在…

零碳园区能源系统-多能互补体系

构建以可再生能源为核心的零碳园区能源系统&#xff0c;需整合光储直柔、光伏发电、微电网、氢能与储能技术&#xff0c;通过多能协同与智能调控实现能源生产、存储、消费全链条优化。以下是系统性实施方案&#xff1a; 一、系统架构设计 1. 多能互补体系 &#xff08;图示&a…

elastic search学习

首先在自己电脑上安装elastic search。安装成功后&#xff0c;查看ES是否启动成功。 安装过程参考&#xff1a;ElasticSearch入门1: mac 安装 - 霜井 - 博客园 安装完成后&#xff0c;直接执行bin目录中的elastic search命令后&#xff0c;就可以启动成功&#xff01; 在网页…

mysql8常用sql语句

查询结果带行号 -- 表名为 mi_user&#xff0c; 假设包含列 id &#xff0c;address SELECT ROW_NUMBER() OVER (ORDER BY id) AS row_num, t.id, t.address FROM mi_user t ; SELECT ROW_NUMBER() OVER ( ) AS row_num, t.id, t.address FROM mi_user t ; 更新某列数…

Memcached 服务搭建和集成使用的详细步骤示例

以下是 Memcached 服务搭建和集成使用的详细步骤示例&#xff1a; 一、搭建 Memcached 服务 安装 Memcached Linux 系统 yum 安装&#xff1a;执行命令 yum install -y memcached memcached-devel。源码安装 下载源码&#xff1a;wget http://www.memcached.org/files/memcach…

2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局

2. 盒模型/布局模块 - 响应式产品展示页 案例&#xff1a;电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…