C语言(11)------------->while循环

一、if与while的区别

在C语言中,有三大结构,分别是顺序、选择和循环。在前面的博客文章中,我们解释了if语句的用法,可以参考:C语言(7)------------>if语句-CSDN博客

从文章中,我们知道if语句是用于选择结构中的。那用于循环结构的是什么呢?用于循环结构的有while循环、for循环和do-while循环。今天我们要讲的就是while循环。

while循环和if语句有什么区别呢?

我们来看一段和if语句有关的代码:

#include <stdio.h>

int main()
{
	if (1)
		printf("hello\n");
	return 0;
}

在VS2019中的运行结果:

我们可以知道if后的小括号里面的值为真,那么就执行if语句所控制的语句。

那while循环的语法又是怎样的呢?

实际上,while循环的语法和if语句的语法十分相似。我们从一个例子进行引入:

#include <stdio.h>

int main()
{
	while (1)
		printf("hello\n");
	return 0;
}

在VS2019中的运行结果:

while后面的小括号里面是1,在C语言中我们称非0值为真,那么1就是为真,所以会控制后面的语句。那为什么有这么多的hello呢?这个就和“循环”这个词有关了,循环就是不断重复,然而这里并没有一个停下来的东西,所以它陷入了一个死循环。

从这里我们可以看到C语言中的while循环的语法和if语句的语法是非常相似的,当它后面的小括号,也就是判断条件为真时执行它的控制语句,否则就不执行。它和if不同的是,while会不断进行下去,直到遇到break或者判断条件为假时才退出循环

在上面的while循环代码加上break之后:

代码:

#include <stdio.h>

int main()
{
	while (1)
	{
		printf("hello\n");
		break;
	}
	return 0;
}

在VS2019中的运行结果:

这时候我们可以看到代码只运行了一个hello,原因是执行了一个hello之后break将使循环强制退出。 

二、打印1-10的数字

直到上面的语法后,下面将是一些关于while循环的练习。

练习1:打印1-10的数字。

思路分析:

打印1-10的数字,也就是打印1、2、3、4、5、6、7、8、9、10。

也就是每一次打印的时候,第一步打印一个1,第二次打印一个2,第三次打印一个3.......

大概就是这个意思。那我们如何实现它呢?

对于这种周而复始的问题,,很显然就要使用到循环结构,那我们现在就可以使用while循环。

打印,我们可以使用printf这个库函数,注意引用stdio.h这个头文件就可以了。

不打印10以后的数字,我们可以将while循环的判断条件设置为小于等于10或者小于11。

那如何实现每一次的增加呢?

这里就要使用到自增操作符,对于不知道这个的可以参考我之前的博客:C语言(4)---------->算数操作符、单目操作符与强制类型转换-CSDN博客

讲解完思路之后我们就开始实现:

参考代码:

#include <stdio.h>

int main()
{
	int num = 1;
	while (num<=10)
	{
		printf("%d ",num);
		num++;
	}
	return 0;
}

 在VS2019中的运行结果:

三、逆序输出数字

练习2:逆序输出数字

例如:

输入:123456 输出:654321 

输入:567 输出:765 

思路讲解:

我们输入一个数字123,如何得到321呢?

也就是我们得到数字的顺序是3------>2-------->1

那我们怎么做呢?

得到3:我们可以对这个数字对10取模然后得到它的余数3

得到2:我们可以对这个数字123除以10之后得到的数字12保留下来,然后它对10取模就可以得到2

得到1:我们可以对这个数字12除以10之后得到的数字1保留下来,然后它对10取模就可以得到1

对于这种多次使用操作的,我们就可以使用循环结构。可以使用while循环。

那我们如何停下来呢?

我们从上述得到1步骤中可知,当12除以10之后得到1,1对10取模之后就得到了1.此时我们就可以不用再去操作了,那我们如何停下来呢?我们可以按照上面的思路再来一次,如果1除以10呢?就得到了0,这个恰好可以用到判断条件里,0为假不执行while循环控制的语句。

参考代码:

#include <stdio.h>

int main()
{
	int num = 0;
	scanf("%d",&num);
	while (num)
	{
		printf("%d ",num%10);
		num = num / 10;
	}
	return 0;
}

 在VS2019中的运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

将 Vue 项目打包后部署到 Spring Boot 项目中的全面指南

将 Vue 项目打包后部署到 Spring Boot 项目中的全面指南 在现代 Web 开发中&#xff0c;前后端分离架构已经成为主流。然而&#xff0c;在某些场景下&#xff0c;我们可能需要将前端项目&#xff08;如 Vue&#xff09;与后端项目&#xff08;如 Spring Boot&#xff09;集成部…

Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)

一、进程虚拟地址空间 这里以kernel 2.6.32&#xff0c;32位平台为例。 1.空间布局 在 32 位系统中&#xff0c;虚拟地址空间大小为 4GB。其中&#xff1a; 内核空间&#xff1a;占据高地址的 1GB &#xff0c;用于操作系统内核运行&#xff0c;包含内核代码、内核数据等&am…

软件集成测试的技术要求

文章目录 一、软件集成测试的概念二、测试对象三、测试目的四、进入条件五、测试内容六、测试环境七、测试实施方一、软件集成测试的概念 软件集成测试(Software Integration Testing),也称部件测试,一种旨在暴露接口以及集成组件间交互时存在的缺陷的测试。集成测试是灰盒…

【信息系统项目管理师-案例真题】2022下半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一(24分)【问题1】(6分)【问题2】(10分)【问题3】(8分)试题二(26分)【问题1】(8分)【问题2】(8分)【问题3】(4分)【问题4】(6分)试题三(25分)【问题1】(12分)【问题2】(7分)【问题…

Golang GORM系列:GORM无缝集成web框架

高效的数据管理是每个成功的web应用程序的支柱。GORM是通用的Go对象关系映射库&#xff0c;它与流行的Go web框架搭配得非常好&#xff0c;提供了无缝集成&#xff0c;简化了数据交互。本指南将带你探索GORM和web框架&#xff08;如Gin&#xff0c; Echo和Beego&#xff09;之间…

C语言(22)

字符函数和字符串函数 7.strcpy/strcat/strcmp与strncpy/strncat/strncmp区别 前者是长度不受限制的字符串函数&#xff0c;后者是长度受限制的字符串函数 8.strncpy的使用 char * strncpy ( char * destination , const char * source , size_t num ) ; //拷贝num个字符从…

提升C++项目编译速度

目录 一、问题背景 二、代码规范方面的解决方案 2.1 拆分头文件 2.2 拆分巨型类 2.3 使用前置声明 2.4 避免在头文件中包含实现 2.5 避免头文件重复包含 2.6 将常用且变动较少的独立到一个文件 三、代码业务重构方面经验 3.1 使用PIMPL&#xff08;Pointer to Imple…

vue从入门到精通(十二):列表渲染

12.1 v-for指令 1.用于展示列表数据 2.语法:v-for“(item,index) in xxx” :key“yyy” 3.可遍历:数组、对象、字符串(用的很少)、指定次数(用的很少) 12.2 key的原理 react、vue中的key有什么作用?(key的内部原理) 1.虚拟DOM中key的作用: key是虚拟DOM对象的标识&#…

Unity游戏制作中的C#基础(1)界面操作基础

1.脚本有关注意事项 &#xff08;1&#xff09;.进入项目之后&#xff0c;一般创建一个文件夹Scripts用来存放c#脚本&#xff1b; &#xff08;2&#xff09;.在Scripts中创建脚本&#xff0c;双击脚本&#xff0c;进入VS编辑器&#xff0c;有如下结构&#xff1a; start&#…

基于Flask的京东商品信息可视化分析系统的设计与实现

【Flask】基于Flask的京东商品信息可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统能够灵活地执行SQL查询&#xff0c;提取出用于分析的关键数据指标。为了将这…

碳基生物的悲歌-DeepSeek思考实现Linux动态库递归收集工具

这是碳基生命的悲歌&#xff0c;还是地球文明的拐点&#xff1f; 今天因为复杂的Linux so 依赖问题&#xff0c;想写一个递归ldd收集所有依赖的工具。抱着试试看的态度&#xff0c;问了DeepSeek&#xff0c;经过5分钟的思考&#xff0c;给出的脚本一次运行通过&#xff0c;我的…

【够用就好005】-在VSCode中管理ECS服务器的实操步骤

前景提要&#xff1a;接触过云服务器&#xff0c;当前有一个可以使用的ecs服务器。 关于如何搭建配置云服务不在今天分享主题内。 亲测有效&#xff01;&#xff01;&#xff01; 通过 VSCode 直接配置服务器步骤 一.先安装ssh插件 CTRL shift x 插件界面输入ssh安装remot…

Mac M3/M4 本地部署Deepseek并集成vscode

Mac 部署 使用傻瓜集成平台ollama&#xff0c;ollama平台依赖于docker&#xff0c;Mac的M3/M4 因doesn’t have VT-X/AMD-v enabled 所以VB,VM无法使用&#xff0c;导致docker无法启动&#xff0c;需要使用docker的替代品podman&#xff0c; 它完全兼容docker brew install p…

Dify使用教程1:Dify创建文本生成应用

选择“创建空白应用”: 选择“文本生成应用”, 填写“应用名称”: 然后点击“创建”: LLM 提供者的密钥未设置, 点击“去设置”: 选择智普:

linux之perf(17)PMU事件采集脚本

Linux之perf(17)PMU事件采集脚本 Author: Once Day Date: 2025年2月22日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Perf性能分析_Once_day的博…

趣味数学300题1981版-十五个正方形

分析&#xff1a;移动两根变成11个正方形很简单&#xff1a; 移动4根变成15个正方形&#xff0c;分析&#xff1a; 一个田字格包含5个正方形&#xff0c;若要15个正方形需要3个田字格&#xff0c;如果3个田字格完全不重合&#xff0c;需要6*318根火柴。如果合并正方形的边&…

光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验

前言 在蓝牙音箱市场竞争日益激烈的当下&#xff0c;开发一款性能卓越且易于上手的蓝牙音箱&#xff0c;成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC&#xff0c;无疑为行业带来了全新的解决方案&#xff0c;以其诸多独特卖点&#xff0c;迅…

第P10周-Pytorch实现车牌号识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Pytorch &#xff08;二&#xff09;具体步骤…

Hyper-V初探

听说window自带虚拟机&#xff0c;小窃喜了一下&#xff0c;这样就不用下载第三方虚拟机软件了&#xff1a;VMware或者Oracle VirtualBox&#xff0c;但是本地搜索一看&#xff0c;发现没有安装&#xff0c;百度了一下说家庭中文版是个阉割版的系统&#xff0c;只有教育版&…

为AI聊天工具添加一个知识系统 之117 详细设计之58 思维导图及观察者效应 之2 概念全景图

&#xff08;说明&#xff1a;本文和上一篇问题基本相同&#xff0c;但换了一个模型 deepseek-r1&#xff09; Q1227、在提出项目“为使用AI聊天工具的聊天者加挂一个专属的知识系统”后&#xff0c;我们已经进行了了大量的讨论-持续了近三个月了。这些讨论整体淋漓尽致体现了…