当前位置: 首页 > news >正文

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中的运行结果:

相关文章:

  • XCP的标准会话应答例程
  • Win11 24h2 不能正常使用ensp的问题(已解决)
  • STM32的“Unique device ID“能否修改?
  • 《DAMA数据管理知识体系指南》第十章 参考数据和主数据管理读书笔记
  • 库的制作与原理(一)
  • Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警
  • 粘贴到Word里的图片显示不全
  • Flutter_学习记录_各个屏幕的适配
  • 深度体验通义灵码2.0 AI 程序员
  • 基于SpringBoot的“宠物救助及领养平台”的设计与实现(源码+数据库+文档+PPT)
  • ctfshow——robots后台泄露
  • 多态的好处
  • 基于光度立体视觉的三维重建方法
  • Linux系统使用Docker部署Geoserver并做数据挂载进行地图服务的发布和游览
  • JAVA 集成 ElasticSearch
  • 力扣每日一题【算法学习day.132】
  • ARMS 助力假面科技研发运维提效,保障极致游戏体验
  • A097基于SpringBoot实现的社区博客管理系统
  • 百度云DeepSeek一体机:百舸、千帆和一见介绍及区别对比
  • Java.lang包中的常用类 --8个包装类型、Math、Class
  • 国防部:菲方应停止一切侵权挑衅危险举动,否则只会自食苦果
  • 晋级四强!WTA1000罗马站:郑钦文2比0萨巴伦卡
  • 颜福庆与顾临的争论:1930年代在中国维持一家医学院要花多少钱
  • 当代科技拟召开债券持有人会议 ,对“H20科技2”进行四展
  • 中巴续签双边本币互换协议,进一步深化金融战略合作
  • 法治日报整版聚焦:儿童能否成为短视频主角?该如何监管?