C语言详解系列——循环语句详解(3)do while语句的语法结构

2023-10-29

do while语句

之前的学习中我们已经了解到了while 语句和if语句两种循环语句,今天要向大家介绍的是do while 语句,我们聊一聊他们之间的区别。首先我们先看看do while 语句的语法结构:

do
{
循环语句;
} while(表达式);

还是像之前一样,让我们用do while 语句输出1-10,以下就是do while的基本语法结构和使用方法。

#include<stdio.h>

int main()
{
	int i = 0;

	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

do while语句中的break和continue

break

for语句和while语句中我们已经知道了break的作用,在循环语句中遇到break就会永久的跳出循环,那么在do while语句中是否break的作用与前者相同呢?让我们在代码中找寻答案。

#include<stdio.h>

int main()
{
	int i = 1;
	do
	{
		if (i == 5)
		{
			break;
		}

		printf("%d ", i);
		i++;

	} while (i <= 10);

	return 0;
}

我们可以看到上面代码的输出结果为1 2 3 4,所以在do while语句中break的作用也是永久跳出循环

continue

让我们再来看看continue的作用

#include<stdio.h>

int main()
{
	int i = 1;
	do
	{
		if (i == 5)
		{
			continue;
		}

		printf("%d ", i);
		i++;

	} while (i <= 10);

	return 0;
}

输出的结果为1 2 3 4但是循环并没有结束,原因是当i = 5;时执行continue跳过了之后的循环语句,包括调整语句i++;所以造成了死循环,所以在do while 语句中continue的作用也是跳过本次循环中在continue之后的语句

do while语句与while语句的不同点

大家可以思考一下while语句和do while 语句有什么不同的地方,在这之前,让我们再来回顾一下while语句的语法结构

while(表达式)
{
循环语句;
}

do
{
循环语句;
} while(表达式);

对比两个语句我们可以发现while语句是先行判断,之后依据判断结果判断是否进入循环。而do while 语句是先进行循环一次,在进行判断,依据判断结果判断是否进入循环。简单来讲二者之间的区别就是 while 语句的循环语句可能不被执行,而do while 语句中的循环语句至少执行一次

简单练习

到这里我们循环结构中的三个基本语句while for do while已经全部分享给大家了,那么让我们实战训练以下吧:

1.计算n的阶乘。

#include<stdio.h>

int main()
{
	int i = 0;
	int n = 0;
	int sum = 1;

	printf("请输入n的值:");
	scanf("%d", &n);

	for (i = 1; i <= n; i++)
	{
		sum *= i;
	}

	printf("%d", sum);

	return 0;
}

2.计算1!+2!+3!+…+10!

int main()
{
	int i = 0;
	int n = 0;
	int sum = 1;
	int mul = 0;

	printf("请输入n的值:");
	scanf("%d", &n);

	for (i = 1; i <= n; i++)
	{
		sum *= i;
		mul += sum;
	}

	printf("%d", mul);

	return 0;
}

不知道大家写出来没有,这里我提供了for语句实现的代码,大家可以尝试用另外两个语句试一试,看看代码会有什么区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言详解系列——循环语句详解(3)do while语句的语法结构 的相关文章

  • 在列标题上绘制矩形

    I m painting rectangle on the column headers in datagridview but on scrolling to right it disappears as in the picture s
  • 简单、高效的弱指针,当目标内存被释放时设置为 NULL

    有没有简单 高效的弱 保护指针 我需要多个指向同一对象的指针 当删除该对象时 这些指针都会自动设置为 NULL 有一个 主 指针始终用于删除对象 但可以有多个其他指针引用同一对象 以下是一些不太符合我的需求的解决方案 QPointer ht
  • 当 edmx 文件位于单独的项目中时出错

    我有问题说 在配置中找不到指定的命名连接 或者不打算与EntityClient提供者 或无效 我的 edmx 文件位于单独的项目中 但该项目的连接字符串app config 什么可能导致问题 确保 app config 位于设置为启动项目的
  • Mono C# 获取应用程序路径

    我正在寻找我的应用程序的目录 它似乎与常规 c 不同 As in Path GetDirectoryName Application ExecutablePath 不管用 一种正确的跨平台解决方案是 Path GetDirectoryNam
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 为什么Java不支持C中的clrscr这样的函数?

    我有一个问题 对很多人来说可能听起来很愚蠢 但我不能停下来把它发布在这里 因为在互联网上找不到任何东西 为什么java没有我们在C中使用的clrscr之类的函数 如果我创建了一个基于用户输入反复迭代的 java 控制台应用程序 然后如果我想
  • 从 Web 浏览器控件读取 Javascript 变量

    我正在尝试读取从表单上的 WebBrowser 控件加载和调用的 Javascript 变量的值 Example index html 引用名为 test js 的 javascript 在 test js 上 创建并填充了几个变量 然后i
  • 在 C# 中将 Exe 文件作为嵌入式资源运行

    我有一个第 3 方 EXE 我只需要从我的 C 应用程序运行它 我的主要目标是对我的 C 文件中的第 3 方可执行文件进行版权保护 有没有更好的方法来做到这一点 我怎样才能做到这一点 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件
  • 保存到会话状态的 DataTable 丢失事件处理程序

    我有一个来自强类型数据集的数据表 该数据集在 TableNewRow 事件上有一个事件处理程序 用于初始化一些日期字段 当我将此表保存到会话状态时 事件处理程序会正常触发 直到表被序列化 在后续请求中 当我从会话状态检索表时 事件处理程序不
  • 无法将 User32.dll 导入 Visual Studio

    I tried To add 用户32 dll from 参考管理器 并将其导入自Windows System32 user32 dll I got 错误信息 无法添加对 C Windows System32 user32 dll 的引用
  • C# Response.Write pdf 不适用于 Android 浏览器

    我目前在 Android 环境中使用 pdf 导出时遇到了巨大的问题 我正在使用报告查看器控件将报告呈现为字节数组 接下来我使用response binarywrite方法将字节流输出到浏览器 这适用于所有浏览器以及 iPhone 和 iP
  • std::function 中参数的自动动态转换

    我们有多态类 A 和 B 例如 struct A virtual A struct B final public A void f std cout lt lt f lt lt std endl 我想分配一个变量std function
  • 对于相同的数据库对象,实体框架对象引用是否相同

    如果我从不同位置查询 逻辑上 在数据库中 相同的对象 实体框架是否返回相同的对象引用 例如 我查询了名为 Joe Black 的客户 并假设现在我知道数据库中只有一个 Joe Black Customer c select blabla w
  • ASPNET MVC - 使用具有相同签名的新助手覆盖 Html.TextBoxFor(model.property)?

    我想用我自己的助手重写 Html TextBoxFor 该助手具有完全相同的签名 当然 但名称空间不同 这是否可能 如果可以 如何实现 原因是我在现有的应用程序中有 100 多个视图 并且我想更改 TextBoxFor 的行为 以便在属性具
  • 在异步方法中显示错误消息的更好方法

    事实上我们不能使用await关键字在catch块使得在 WinRT 中显示来自异步方法的错误消息变得非常尴尬 因为MessageDialogAPI 是异步的 理想情况下我希望能够这样写 private async Task DoSometh
  • C++ boost asio超时用于阻止连接

    我有一个 C boost 客户端 它执行阻塞连接并在收到响应后处理消息 我面临一个奇怪的问题 tcp resolver query query tcp v6 this gt host port tcp resolver query v4 m
  • xaml.cs 文件上的 InitializeComponent() 出现错误

    有时我会收到一个红色错误 内容如下 InitializeComponent 在当前上下文中不存在 以及我的其他变量 xaml受约束的x Name The x ClassXaml 文件中的名称空间和类名确实对应于我的xaml cs file
  • 迭代非增量枚举

    在你问之前 我已经looked https stackoverflow com questions 261963 c iterate through an enum and looked https stackoverflow com qu
  • C++ 中的无符号双精度?

    为什么 C 不支持无符号双精度语法 因为典型的浮点格式不支持无符号数 例如 参见此 IEEE 754 格式列表 http en wikipedia org wiki IEEE 754 2008 Formats 添加通用硬件不支持的数字格式只
  • 在 '*' 标记之前编译“错误:预期 ')' 时出现多个相同错误

    我正在尝试用 C 语言编程 当我使用以下参数进行编译时 gcc D BSD SOURCE Wall ansi pedantic g tokenizer c FileOccur c WordList c wordstat c indexer

随机推荐

  • 【Pytorch】Tensor的元素操作

    Tensor的操作 Tensor的主要运算操作通常分为四大类 Reshaping operations 重塑操作 Element wise operations 元素操作 Reduction operations 缩减操作 Access o
  • Springbooot配置logback日志详解及实践

    文章目录 一 前言 二 使用详解 1 logback介绍 2 logback配置 2 1 基本配置 2 2 Logback 配置项详解 2 3 Logback配置打印信息着色 2 4 不同环境配置不同的日志级别 2 5 logback 高级
  • 最详细教程【React+TS】从零开始搭建React+TypeScript+Router+Redux+Less+px2rem自适应+sass+axios反向代理+别名@+Antd-mobile

    前提 你需要准备好node js版本不低于6 14 8 和 git 文章内容比较长 保姆级别教程 全是干货 请耐心看完 通过create react app脚手架搭建项目 1 第一步 注 项目名称不可以出现大写字母 打开文件夹 呼出cmd
  • (十一)K8S可视化工具Rancher学习、安装

    1 Rancher背景概述 在过去几年中 容器技术如 Docker 和容器编排引擎如 Kubernetes 受到了广泛关注和采用 它们为应用程序的部署 可扩展性和管理带来了革命性的变化 然而 随着容器技术的快速发展 容器集群的管理和操作变得
  • 【风险预警】Confluence Wiki OGNL注入漏洞(CVE-2022-26134)

    简述 6月4日 墨菲安全实验室监测发现Atlassian修复了Confluence Server 和 Confluence Data Center 中的OGNL注入漏洞 Atlassian Confluence是企业常用的wiki系统 攻击
  • fastjson泛型T反序列化

    fastjson泛型T反序列化 当fastjson反序列化时 如果目标对象中包含了泛型 默认会将泛型类转换为JSONObject 获取数据时会报错类型转换错误 java lang ClassCastException com alibaba
  • 你手上的PCB怎么制作的?几张动图揭晓工厂生产流程

    在PCB出现之前 电路是通过点到点的接线组成的 这种方法的可靠性很低 因为随着电路的老化 线路的破裂会导致线路节点的断路或者短路 绕线技术是电路技术的一个重大进步 这种方法通过将小口径线材绕在连接点的柱子上 提升了线路的耐久性以及可更换性
  • java Collections工具类使用总结(疯狂java讲义读书笔记)

    1 排序操作 2 查找 替换操作 3 同步控制 Collection c Collections synchronizedCollection new ArrayList List list Collections synchronized
  • 若依框架学习(五)用户的增删改查

    点击部门树状图来进行条件查询 前端找到对应的页面 按照路由路径 里面有个handleNodeClick 点击事件 点进去看看 发现是复用了getList 方法 说明后台也是复用相应的方法 获取用户列表 PreAuthorize在调用方法前先
  • <链表>找到链表中的中心点

    找到链表中的中心点 奇数 m 2 n mid n 1 思想是确定当前共有多少个节点 当节点个数多时不能采用遍历直到指针域指向空的方法o n 快慢指针 两个指针从起点开始移动 A走两个节点 B走1个节点 当A走到终点时B走到中点 循环退出条件
  • Linux系统下远程连接mysql出错-2003 -Can't connect to MySQL server on 'ip' (10060 "Unknown error")

    第一步 首先检查mysql配置文件里面是否设置了默认连接地址 默认端口号 bind address 0 0 0 0 port 3306 然后发现并没有 第二步 输入密码进入mysql数据库 mysql u root p 设置主机权限 并设置
  • 泰拉瑞亚显示已连接服务器失败,打开泰拉瑞亚提示网络异常或者连接不上

    泰拉瑞亚这款游戏相信大家都不陌生吧 最近小编经常收到打开泰拉瑞亚提示网络异常或者连接不上问题的反馈 接下来小编就为大家提供几种常见的处理方案 泰拉瑞亚游戏简介 泰拉瑞亚 Terraria 人气像素游戏 登陆 Android 平台 它被玩家戏
  • PDF复制文字到Word出现空格、换行等格式调整

    文章目录 WORD内批量替换 QQ文字识别 推荐 PDF复制到word后出现大量空格 换行 难以一个个调整 下面结束两种批量处理的方法 建议将PDF复制的内容在新word文档中调整好后再粘贴到需要的文档中 不然一不小心就把之前的内容全部替换
  • Zookeeper 客户端之基本操作指令

    ZooKeeper命令行工具类似于Linux的shell环境 不过功能肯定不及shell啦 但是使用它我们可以简单的对ZooKeeper进行访问 数据创建 数据修改等操作 命令行工具的一些简单操作如下 zkCli sh客户端连接命令 ls
  • Spring5的总体架构图

    Spring5的主体架构图 主要是四大部分 Web Data Access Integration Core Container 中间层 具体见下图 转载于 https www cnblogs com love jk p overall h
  • @TableField介绍和使用

    1 TableField exist false 注解加载bean属性上 表示当前属性不是数据库的字段 但在项目中必须使用 这样在新增等使用bean的时候 mybatis plus就会忽略这个 不会报错 否则会报一个如下的异常 Error
  • okhttp3.0忽略https证书

    okhttp的基本使用网上很多 可以自己找到很多例子 最近有个项目需要https 进行验证发送请求回来error 提示 host not vertify 琢磨了半天 最后是需要将证书认证忽略 那就开始构建一个SSL来信任所有的证书 忽略证书
  • Swin-Transformer-Semantic-Segmentation训练自己的数据集

    论文地址 源码 1 按照作者的步骤安装好所需的环境 2 安装可以运行一下demo看环境是否搭建成功 3 准备好自己的数据集 我用的是VOC数据集 4 修改confis base datasets pascal voc12 py 5 修改mm
  • [Spring Boot]12 ElasticSearch实现分词搜索功能

    目录 一 前言 二 搜索功能的需求 三 需求开发 1 服务器安装ElasticSearch和IK分词器 2 需求开发 1 pom xml引入jar包 2 yml增加配置 3 配置类ElasticsearchConfig 4 工具类Elast
  • C语言详解系列——循环语句详解(3)do while语句的语法结构

    文章目录 do while语句 do while语句中的break和continue break continue do while语句与while语句的不同点 简单练习 do while语句 之前的学习中我们已经了解到了while 语句和