编程入门之c语言中的循环结构(详解版)

一、while

格式

while(条件表达式)
{
    语句块;
}

whie后面跟上一个条件表达式,接着是要执行的语句块。如果while只跟一条语句的话,可以省略大括号;如果是要执行多条语句则需要加上大括号。

运行流程

编程入门之c语言中的循环结构(详解版)_第1张图片
首先当程序进入到while语句中,会先对条件表达式做处理,如果表达式为真,则执行while的语句块,如果表达式为假,则跳出while语句。

让我们来看看while语句的代码吧。

#include

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

上面的代码实现了打印出0到9的数字。
i从0开始,直到 i 累加到10,跳出while循环。

如果我们没有删掉i++,结果会怎么样?
让我们来看看代码的执行效果。
编程入门之c语言中的循环结构(详解版)_第2张图片

结果会无限打印0,while循环就变成了死循环
可见我们在使用while循环的时候要注意对语句进行调整,使总有一个条件能结束循环,避免死循环的出现。
想必大家已经掌握了while的用法了。

二、for

格式

for(变量初始化;条件判断;变量调整)
{
     语句块;
}

它和while类似,如果只执行一条语句就不用大括号,反之则需使用大括号。

上面使for的一般格式,有时我们会使用它的特殊形式,即除了处理条件表达式之外,我们可以省略其他的部分(变量的初始化与调整)。
例如下面的代码

for(;i==10;i++)
    printf("%d",i);
for(;i==10;)
    printf("%d",i);
for(i=10;i==10;)
    printf("%d",i);

运行流程

编程入门之c语言中的循环结构(详解版)_第3张图片
上面的流程图,告诉我们在进入for循环时,先进行变量的初始化(*有且仅有*只进行一次),接着开始进行条件判断(当满足条件则进入循环内部,反之则跳出循环),然后进行变量的调整,接着继续进行条件判断,直到不满足条件跳出循环为止。

由此可见条件表达式时绝对不能省略的,否则就会像上面while的死循环一样。

让我们来看看如何用for循环打印0到9的数字吧

#include

int main()
{
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

代码运行效果如下:
编程入门之c语言中的循环结构(详解版)_第4张图片
来尝试一下用上面的for循环的流程图分析一下吧。

首先初始化变量 i 为0,接着进行条件判断看是否小于10,如果是,则执行语句(即打印该数字),接着对变量 i 进行调整(避免出现死循环)即进行(i ++ ),然后进行条件判断,一直循环下去,直至 i 不满足小于10的条件(即循环结束,程序跳出循环)。

相信大家掌握了for 循环的基本操作了。

三、do while

格式

do
{
      语句块;
}while(条件表达式);

do 后面一定要接大括号(千万不要省略,哪怕只有一条语句要执行,也不能省略)然后大括号内部写上你要执行的语句块,接着在括号旁边跟上while(条件表达式),最后一定要写上英文的分号哦!!!(别忘了分号)

运行流程

编程入门之c语言中的循环结构(详解版)_第5张图片
可以看出do while 语句不管怎么样,都会先执行一次语句块,接着在进行条件判断,接着就如上面所说的一样,直到不满足条件跳出循环。

让我们看一下do while 语句的代码一以及运行效果吧。

#include

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

编程入门之c语言中的循环结构(详解版)_第6张图片
让我们来分析一下代码吧。
首先执行语句块(即打印0),接着 i++,然后进行判断,直到不满足while的条件为止 ,循环结束。

这里先恭喜大家以及掌握了三大常用的循环语句。

四、while和for的区别

首先除了格式不同之外,我们要关注两个循环语句的流程是不太一样的,while语句就是把条件表达式,变量调整,以及变量的初始化都放在各自的地方,比较分散;而for语句就是将三者放在同一个地方,这样比较方便我们修改。
不管怎么样?在面对编程的过程中,我们需要灵活地使用上面三大循环语句,不管黑猫白猫,能捉到老鼠的就是好猫。

五、循环的好帮手break 和 continue

一起来看看break 和 continue在三大循环语句中的表现吧

break

先来看看代码运行吧。
编程入门之c语言中的循环结构(详解版)_第7张图片

通过上述实验,我们可以看出break会让程序跳出循环。


那问题来了,如果是有两层循环的话,会怎么办呢?
来看看下面的代码运行图吧。
没有break的情况:
编程入门之c语言中的循环结构(详解版)_第8张图片
有break的情况:
编程入门之c语言中的循环结构(详解版)_第9张图片
从上面的代码运行效果来看,break只能跳出自己所在的一层循环!!!在其他循环语句嵌套情况下也是一样的,这里就不一一举例了。


continue

没有continue的情况:
编程入门之c语言中的循环结构(详解版)_第10张图片


有continue 的情况:
编程入门之c语言中的循环结构(详解版)_第11张图片
通过上述实验我们可以看出continue 会让程序跳过continue 后面的语句,直接进入下一次的循环判断(如果满足条件则进入循环中,反之则跳出循环)


那么continue 在循环嵌套中又是怎么表现呢?
来一起看看下面得代码运行吧。
编程入门之c语言中的循环结构(详解版)_第12张图片
可见contiune 和break也是一样只能控制自己所在的一层循环语句。为什么这么说呢?因为如果continue 能控制两层循环的话,那应该从for(i = 0; i < 2; i++)这个循环开始并且跳过contiue后面的语句printf(“hello\n”),然而运行结果并没有这样做,因此continue 只能控制自己所在的一层循环。


break 和 continue 的区别(小结)

break意为打破,在程序里是跳出一层循环的意思,continue 意为继续,在程序里是不继续continue 后面的语句,直接进行下一次循环判断(如果满足条件则进入循环,反之跳出循环)

六、goto 语句

goto 语句可以在实现在同一个函数内跳转到设计好的标号处。
goto 语句的使用要和跳转标号配套使用。
来看一下代码吧。

#include

int main()
{
	printf("Welcome to goto !!!\n");
	goto next;
	printf("hello\n");

next:
	printf("你好呀!\n");
	return 0;
}

编程入门之c语言中的循环结构(详解版)_第13张图片
想必大家已经对goto 语句有所了解了,goto 语句就是让程序跳转到标号处的位置,去执行代码。(注意goto 语句和标号必须在同一个函数内部才可以哦!!!)


让我们来思考一下,break只能跳出一层循环,如果想要跳出多层循环的话就要使用多个break,这时goto 语句便大展身手,直接跳转到你想要的位置,这就是goto 语句的好处。
但是,有好便有坏,我们要辩证地看待事物。大家想一想,在我们写一个庞大地工程时,有几万行代码甚至上千万地代码,如果频繁地使用goto 语句可能会发生一些不可控的事情,可能会导致goto 语句在重新中随意乱跳,打乱程序的执行流程。
总结一下,goto 语句虽好,但是还是建议大家能尽量不去使用就不使用了。


感谢你阅读到最后,希望这篇文章能帮助到你。制作不易,如果可以,能点个赞支持一下吗?我将会在本专栏上持续推出作品~~ 点个关注,下次不迷路哦!

你可能感兴趣的:(初始c语言,c语言)