C语言 while 和 do while 区别

news2024/9/27 21:27:13

先简单介绍一下C语言中的while和do while语句

while循环

语法

C 语言中 while 循环的语法:

while(condition)
{
   statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。

condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

流程图

在这里,while 循环的关键点是循环可能一次都不会执行。当条件为 false 时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* while 循环执行 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
   }
 
   return 0;
}

 

当上面的代码被编译和执行时,它会产生下列结果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

do...while 循环

不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do...while 循环是在循环的尾部检查它的条件。

do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。

语法

C 语言中 do...while 循环的语法:

do
{
   statement(s);

}while( condition );

请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。

流程图

实例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行,在条件被测试之前至少执行一次 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

 

当上面的代码被编译和执行时,它会产生下列结果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

C语言 while 和 do while 区别

while 和 do while 都是 C 语言中的循环语句,它们的主要区别在于循环体执行的顺序。

while 循环首先检查循环条件,只有当条件为真时才执行循环体。因此,如果条件一开始就为假,那么循环体将永远不会执行。而如果条件一直为真,那么循环将一直执行下去。

while: 你欠我钱,我走路上,前面一人,我先看清楚这个人是不是你,不是就不打。

do while: 你欠我钱,我走路上,前面一人,我不管这个人是不是你,先打再说。

下面是一个 while 循环的实例程序:

实例

#include <stdio.h>

int main() {
    int i = 0;
    while (i < 5) {
        printf("i = %d\n", i);
        i++;
    }
    return 0;
}

 

输出结果为:

i = 0
i = 1
i = 2
i = 3
i = 4

do while 循环与 while 循环的主要区别在于它们执行循环体的顺序。do while 循环首先执行循环体,然后检查循环条件。因此,即使条件一开始就为假,循环体也会至少执行一次。

下面是一个 do while 循环的实例程序:

实例

#include <stdio.h>

int main() {
    int i = 0;
    do {
        printf("i = %d\n", i);
        i++;
    } while (i < 5);
    return 0;
}

输出结果为:

i = 0
i = 1
i = 2
i = 3
i = 4

可以看到,即使 i 的初始值为 0,do while 循环仍然执行了 5 次循环体,因为它们先执行了循环体,然后再检查循环条件。

总的来说,while 循环适用于在循环之前检查条件,而 do while 循环适用于至少执行一次循环体,不管条件是否成立。

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

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

相关文章

Kubernetes 启动Pod的方法-Pod的调度算法-Pod间的通信-k8s的控制器-Pod资源控制-发布Service服务

目录 Pod 参考文档&#xff1a;Pod | Kubernetes Pod配置文件&#xff1a;simple-pod.yaml 对master进行如下操作 Pod的状态有&#xff1a; 参考文档&#xff1a;(70条消息) Pod生命周期中的状态解释_pod状态_闹玩儿扣眼珠子的博客-CSDN博客 进入Pod内的nginx容器&#…

【Ubuntu】系统U盘变为普通U盘

如果您在 Ubuntu 系统上没有磁盘工具可用&#xff0c;您可以尝试使用命令行工具来格式化系统 U 盘。请按照以下步骤进行操作&#xff1a; 打开终端&#xff1a;在 Ubuntu 桌面上&#xff0c;按下 Ctrl Alt T 快捷键&#xff0c;或者在应用程序菜单中搜索并打开 "终端&qu…

PPT文件,使用python删除链接

文章目录 一、需求二、处理方式三、代码实现 一、需求 如下图所示&#xff0c;将PPT文件中的链接进行删除&#xff0c;且不保留链接名。 原始文件&#xff1a; 处理后文件&#xff1a; 二、处理方式 使用python 的pptx模块进行处理&#xff0c;读取文字块&#xff0c;然后…

FPGA实验二:模可变计数器设计

目录 一、实验目的 二、实验要求 三、实验代码 1.实验源码 2.部分代码设计思路分析 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 3、下载测试结果及分析 五、实验心得 1.解决实验中遇到的困难及解决 2.完成实验后的心得 一、实验目的 &#xff08;1&#xf…

【Linux系统编程】Linux 软件包管理器——yum

文章目录 1. 什么是yum2. yum的使用2.1 注意事项2.2 查看软件包2.3 如何安装软件2.4 如何卸载软件2.5 yum源 这篇文章我们要学习的是—— Linux 软件包管理器 yum。 1. 什么是yum 首先来问大家一个问题&#xff1a; 我们平时使用的手机上&#xff0c;都会有一个应用叫做“应…

【全栈开发指南】OAuth2授权获取token调试接口的方式

在我们实际应用接口的调用调试过程中&#xff0c;需要用到token或者刷新token&#xff0c;GitEgg支持OAuth2.0协议进行认证授权&#xff0c;这里介绍说明如何通过Postman获取token和refresh_token并进行接口调试。 1、使用密码模式获取token 根据spring-security-oauth2的实现…

创建虚拟机安装windowserver2016服务器(NETBASE第二课)

2 操作流程 文件-新建虚拟机-自定义&#xff08;高级&#xff09;-下一步-稍后安装操作系统-下一步-客户机操作系统-选择Windows 10 X64-下一步-虚拟机名输入win10-1-位置选择&#xff08;E:\虚拟机\Win10-1&#xff09;-下一步-固件类型选择UEFI-下一步-下一步-输入内存2048M-…

2023年Arm最新处理器架构分析——X4、A720和A520

1、引言 上一篇文章我们介绍了Arm的Cortex-X1至Cortex-X3系列处理器&#xff0c;2023年的5月底&#xff0c;Arm如期发布了新一年的处理器架构&#xff0c;分别为超级大核心Cortex-X4&#xff0c;大核心A720和小核心A520。在智能手机行业&#xff0c;Arm始终保持每年一迭代的处…

ModaHub魔搭社区:ChatGLM-RLHF:无需微调 教程

目录 使用方法 效果展示 对ChatGLM直接使用RLHF进行调整参数&#xff0c;无需传统的finetune|Modify ChatGLM params with only RLHF。 大部分的RLHF代码都是在分布式框架&#xff0c;不适合学习和使用&#xff0c;本代码的RLHF代码不需要Megatron或者deepspeed框架&#xff…

Maven高级(三)--聚合

1.解决的问题&#xff1a; 此时tlias-web-management模块的父工程是tlias-parent,该模块又依赖了tlias-pojo,tlias-utils模块。那么此时&#xff0c;我们要将tlias-web-management模块打包&#xff0c;是比较繁琐的。因为进行项目打包&#xff0c;maven会从本地仓库来查找tlias…

Jupyter notebook 安装代码提示和补全

打开Anaconda Prompt 终端 依次输入 pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user pip install jupyter_nbextensions_configurator jupyter nbextensions_configurator enable --user 打开Jupyter notebook

Linux的用户管理精简全总结

&#xff08;该图由AI绘制 关注我 学习AI画图&#xff09; 目录 Linux操作系统用户和组的概念 1、为什么需要了解用户和组 2、用户和组的关系 3、用户组操作 ☆☆☆☆☆☆☆☆☆☆☆ /etc/group文件解析 ☆ 用户组的修改 ☆ 用户组的删除 4、用户操作 ☆ 用户信息查…

VSCode 提示 1.16.15 版本的Go,不支持 gopls v.0.13.0

Go1.16.15无法使用 goplsv.0.13.0 问题详情解决办法 问题详情 Gopls was built with Go version 1.16, which will be unsupported by gopls v0.13.0. Please upgrade to Go 1.18 or later and reinstall gopls. If you cant upgrade and want this message to go away, pleas…

FPGA实现二进制转BCD码

1、简介 bcd码&#xff1a;以4bit二进制码表示一个十进制码 例如&#xff0c;432&#xff08;d&#xff09; 0100-0011-0010&#xff08;bcd&#xff09; 这里具体的判断方法为&#xff1a;&#xff08;满5&#xff09;加3法 二进制位宽为W&#xff0c;则BCD位宽只需要&…

JS 实现CSV文件转换SQL文件小工具

一. 需求 最近在项目中遇到一个问题&#xff0c;客户提供的数据是CSV格式的&#xff0c; 需要将CSV文件中的数据转换为SQL语句文件。 &#x1f605;由于本人不会Excel的vba编程&#xff0c;因此决定使用JS来实现。 二. 实现思路 提供一个文件上传框&#xff0c;支持多文件上…

微信小程序全局配置详解

通过全局配置实现的效果 开发者 微信公众平台 登录网址 https://mp.weixin.qq.com/ 注册网址 https://mp.weixin.qq.com/cgi-bin/wx?token&langzh_CN 微信小程序开发者工具 下载地址 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 小…

WPF grid控件定义行和列

在此已经学习了wpf Grid控件&#xff0c; WPF布局控件Grid的基本使用 - 使用kaxaml_bcbobo21cn的博客-CSDN博客 下面继续学习&#xff1b; 定义3行3列的基本代码如下&#xff1b;为了看清效果&#xff0c;设置 ShowGridLines"True"&#xff1b; <Grid ShowGrid…

Tkinter_鼠标选中样式

前言 使用tkinter库创建窗口应用程序示例&#xff0c;包含不同鼠标样式标签。 一、方法 import tkinter as tkclass Mouse_Style:def __init__(self):self.root tk.Tk()self.root.title(样式)self.root.geometry("200x5201100150")self.interface()def interface(…

【G431】多路ADC+DMA采集

文章目录 前言1.CubeMx的配置步骤3.测试代码4.演示效果 总结 前言 之前蓝桥杯程序中使用的是查询方式的ADC&#xff0c;缺点是当采集通道多的时候会导致CPU速率变低从而导致查询ADC代码之后的程序会被阻塞。而DMA就不会&#xff0c;DMA会绕开CPU直接传输。 1.CubeMx的配置步骤…

GDB 查看、修改变量

1、info args : 查看函数的入参内容 2、set print null-stop :遇到无效的字符就不显示出来了 3、set print pretty :让结构体以定义的形式展示出来&#xff0c;一个字段一行 4、 set print arry on :让数组中的元素每个占一行显示 5、 p sizeof(xxx) : 查看xxx的大小&#xff…