C语言基础——循环语句

🌺​🙏🙏🙏欢迎大家观看,写的好的话希望三连感谢🙏🙏🙏🌺


文章目录

一、循环语句的介绍

二、不同循环语句的使用

1.while循环

[1.1 while循环的使用方式](#1.1 while循环的使用方式)

[1.2 while循环的执行流程](#1.2 while循环的执行流程)

2.for循环

[2.1 for循环的使用方法](#2.1 for循环的使用方法)

[2.2 for循环的执行流程](#2.2 for循环的执行流程)

3.do......while循环

[3.1 do......while循环的使用方式](#3.1 do……while循环的使用方式)

[3.2 do......while循环的执行流程](#3.2 do……while循环的执行流程)

三、break和continue在循环之中的使用

1.break

2.continue

总结


前言

大家好啊,通过我们上一章节的学习,我们了解了条件语句的具体使用方法,通过条件语句,我们便可以尝试去让计算机去判断和执行很多不同条件时的输出,但是小伙伴们肯定有的时候会困扰,如果我们在一个条件下要执行很多重复的指令怎么办呢,就比如在日常生活之中,我们可能会因为没有写作业的条件下被老师罚抄课文100遍(痛苦的回忆[:(]),这个时候怎么办呢,老老实实输入100遍嘛?肯定是不方便的,这时就要用到我们今天的循环语句啦。


一、循环语句的介绍

就前言所说,循环循环顾名思义就是重复,在一定的条件下去不断的重复一个我们要的内容,可能是一个指令,也可能是一个函数等,在C语言当中,循环语句有while循环、do......while循环、for循环等等,它们的使用场景和使用方法都不太一样,接下来我们便来一探究竟吧。

二、不同循环语句的使用

1.while循环

1.1 while循环的使用方式

在提到while循环的使用方法前,我们先不急着往下探究,让我们的脑海之中先来回忆回忆我们上一章节的if语句的语法。相信大家都没有遗忘,那么接下来我们下来先来对比对比if语句和while循环语句的语法之间不同之处和相似之处。

if (条件)

{ 语句; }

while (条件)

{ 语句; }

可以看出来,它们的语法是是非常的相似的,基本上就是一模一样。我们来尝试这写两行代码来试试看。

cs 复制代码
int main()
{
    if(1)
        printf("hello\n");
    return 0;
}

这样就构建了一个很简单的条件语句,那如果我们要不停的循环输出hello怎么做呢?

cs 复制代码
int main()
{
    while(1)
    {
        printf("hello\n");
    }
    return 0;
}

我们来运行一下就会发现

我们的程序陷入了一个死循环,这是因为我们在while循环的条件之中输入了1,我们都知道只要不是0就是表示真,所以循环一直是真它就会不停的循环。

1.2 while循环的执行流程

while循环的具体的逻辑我们可以从下图来详细的介绍介绍。

这是一个while语句的执行流程图,我们可以看到,我们的程序从红色方框里面进入语句,先判断条件成不成立,如果不成立就返回0然后从1跳出循环后程序结束,如果条件成立了,那就进入循环,然后执行语句,执行完语句后再从3返回去重新判断条件是否符合,如果这个时候还符合,那我们就从继续,反之我们就跳出循环。

由此可见,我们刚才while循环的条件就是1,无论输入多少hello条件一直是真,所以就进入了死循环了。

我们接下来写一道练习来看看,再屏幕中输入1~100的数字,那我们改怎么办呢,再学习循环之前我们可能只会printf("1 2 3 ......"),太繁琐了,既然我们已经学了一个while该怎么使用它来简化我们的代码量呢

cs 复制代码
int main()
{
	int a = 1;
	while (a <= 100)
	{
		printf("%d ", a);
		a++;
	}
	return 0;
}

其实很简单,我们就让while循环的条件让 a <= 100就可以了,然后在语句之中输出a,但是要记住,在每次输出完a后要让a自增一下,这样每次a都增加1后输出出来,等到a自增到不符合条件时循环就会停下来啦。

这样是不是就方便多了。但是要注意,因为a = 100时还是满足条件的,所以进入程序后a还是自增了,所以当a跳出循环时是101而不是100哦。

从上面的例题我们可以知道,while循环的三个很重要的部分,

这个叫做循环的初始化,用来初始进入循环时用来判断的条件的初始值。

这个就是循环是否进行下去的条件判断。

这个是用来调整的语句,如果失去这个,那么循环很可能就会陷入死循环。

2.for循环

for循环创建出来的原因本质上是因为while循环拥有部分的缺陷所以才创建出来的。我们通过刚刚的学习可以知道,while循环要成立有3个重要的关键点,但是随着我们的代码量的增加,我们的这三个关键点可能会被很多其他的代码所隔开,导致不方便修改,所以就出现了for循环来改变了这个缺陷。

2.1 for循环的使用方法

for循环是C语言中使用最多的循环语句,其语法结构如下所示

for ( 表达式1; 表达式2; 表达式3 )

{ 语句; }

我们可以看见,while语句中本该是条件的部分变成了3个表达式了,那这三个表达式分别是什么呢?其实我们从上面可以知道for循环产生的原因是因为while循环关键点容易被别的代码冲散而导致不方便修改的缺陷,那如果是我们来修改的话该怎么修改呢,把它放在一起不就好啦,设计师也是这么想的,所以说

表达式1 -------- 初始化

表达式2 -------- 判断

表达式3 -------- 调整

这就是for循环的语法内容,如果我们要使用for循环来输入1~100的数字时,和while相比我们只要将原来分散开的三个条件放在一起即可

cs 复制代码
int main()
{
	for (int i = 1; i <= 100; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

我们可以看出来,代码精炼且美观了不少,同时,如果我们想要修改条件或者初始值之类的也非常容易找到并且修改。

注意:

这里是由分号隔开而不是逗号。

2.2 for循环的执行流程

我们接下来看看for循环的具体逻辑吧。

如图所示,

我们就拿这个代码为例来分析一下

cs 复制代码
int main()
{
	for (int i = 1; i <= 100; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

首先就是初始化代码,也就是 int i = 1 ;然后到了表达式2的判断是否 i <= 100 ,如果满足条件就输出i,这里很显然是满足的所以就输出了i,这个时候就continue返回表达式2再进行判断,但是在返回的途中要先用表达式3进行调整,一直到 a = 101 时不满足表达式2的判断时跳出循环。

3.do......while循环

do......while循环是C语言中使用的最少的循环语句,它与for循环和while循环不同之处在于后者是先判断是否符合条件再进行第一次的语句运行,而前者则是先进行第一次语句运行再判断符不符合条件。

3.1 do......while循环的使用方式

其具体的语法如下所示

do

语句;

while ( 表达式 );

同样的,我们先来尝试一下如何实现在屏幕上打印1~100的数字吧。

cs 复制代码
int main()
{
	int a = 1;
	do
	{
		printf("%d ", a);
		a++;
	} while (a <= 100);
	return 0;
}

很显然,其实语法和while循环的差不多,唯一的区别就在于它是先运行再判断的,无论如何它都会输出一次的,哪怕本来就不满足判断的条件

例如:

cs 复制代码
int main()
{
	int a = 1;
	do
	{
		printf("a大于100\n");
		a--;
	} while (a > 100);
	return 0;
}

我这里想看看a是不是大于100,这里的a是1,很显然不大于,按道理来讲应该不会输出的。我们来运行试试。

3.2 do......while循环的执行流程

以下是do......while语句的执行流程,

在这里我们可以看到do......while循环再程序运行到此时不管三七二十一,直接开始对语句进行运行,在运行完一遍以后才开始来判断是否满足表达式,也就是说无论如何do......while循环都会运行一次。

三、break和continue在循环之中的使用

1.break

我们在上一章节就知道了break在条件语句之中的作用是跳出这个条件,在switch语句中如果程序在识别到了break就会跳出条件语句,这样就避免了会把后面不符合条件的内容运行出来,在循环语句之中也是一样的,假如程序在识别到了break,那么就会立刻跳出循环而不会运行下去,这里拿while循环为例。

我们可以从while的执行流程可以看出来当程序识别到了break,那么就会立刻从4结束而不继续运行,我们可以看看下面两个代码。

cs 复制代码
int main()
{
	int a = 1;
	while (a <= 100)
	{
		printf("%d ", a);
		if (a == 5)
			break;
		a++;
	}
	return 0;
}
cs 复制代码
int main()
{
	int a = 1;
	while (a <= 100)
	{
		printf("%d ", a);
		a++;
		if (a == 5)
			break;
		
	}
	return 0;
}

这个本来是输出1~100的数字的代码,经过我的这样一修改那么会变成什么样呢,上面和下面的输出结果会相同吗?我们来看看

可以看到,它们并没有输出1~100,而且上面输出的值和下面的还不一样,这就是break的作用了,上面的程序当a == 5是满足了条件语句,所以程序进入后识别到了break,所以立刻跳出了循环,下面也是一样的但是由于a++的位置不同,导致当a == 4时进入循环输出过后自增变成了5满足后面的条件语句,所以就跳出循环了,如果说break下面还有代码也是不会运行的。

2.continue

continue的作用是跳过本次循环,它和break相比没有那么绝情,只是跳过本次循环,相当于时跳过了continue后面的代码直接进入下一次循环,但是要记住,如果continue下面有调节的代码就很容易死循环。

cs 复制代码
int main()
{
	int a = 1;
	while (a <= 100)
	{
		printf("%d ", a);
		if (a == 5)
			continue;
		a++;
	}
	return 0;
}

如果这个时候运行代码就会无限制的输入5了

所以说如果是用来调节的代码千万不要放在continue后面。


总结

通过本章节的学习,我们已经基本上了解了循环语句的使用方法,但是其实循环语句还可以嵌套使用,一般来说都可以由两个循环嵌套起来,这个我们下一章节再讲,感谢小伙伴们的观看,如果有什么不对的地方请指正,我一定会改正的,谢谢大家。

相关推荐
秃头佛爷9 分钟前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨10 分钟前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
hikktn5 小时前
如何在 Rust 中实现内存安全:与 C/C++ 的对比分析
c语言·安全·rust