详解C语言中的循环语句

文章目录

  • 1.前言
  • 2. while循环
    • 2.1 if 和 whlie的对比
    • 2.2 while 语句的工作机制
    • 2.3 while 循环的实践
  • 3. for 循环
    • 3.1 for 循环语法
    • 3.2 for 循环的工作机制
    • 3.3 for 循环实践
  • 4 do while 循环
    • 4.1 do whlie循环语法
    • 4.2 do while循环的工作机理
    • 4.3 do while循环实践
  • 5. break 和 continue语句
    • 5.1 break举例
    • 5.2 continue举例
  • 6.goto语句
  • 7. 总结

1.前言

我们都说C语言是一种结构化的程序设计语言,其结构分为三种,顺序结构、选择结构、循环结构
在之前的文章中,我详细讲解过了顺序结构和选择结构,那么在本文章中,将讲解C语言中的最后中结构——循环结构。
C语言中,提供好了三种循环语句,它们分别是while、do…while、for循环语句。

2. while循环

接下来我们讲解一下,三大循环语句之一的while循环!

2.1 if 和 whlie的对比

讲这个的目的是,让我们从自己熟悉的知识出发,去接触新的知识,会达到事半功倍的效果。

whlie的语法形式:

if(表达式)
	语句;

while(表达式)
	语句;//如果循环想要表达更多的语句内容时,记得加上大括号哦!(这个点跟if一样)

请读者看下面两个代码:

#include
int main()
{
	if(1)
		//if后面的表达式为真时,就会打印"今天又是元气满满的一天"
		printf("今天又是元气满满的一天!\n");
	return 0;
}
#include
int main()
{
	while(1)
		//while后面的表达式为真时,就会死循环的打印"今天又是元气满满的一天"
		printf("今天又是元气满满的一天!\n");
	return 0;
}

细心的读者就已经发现它们两个的区别了。循环循环,总得是个不断重复的干某件事过程吧。

这个就是选择语句跟循环语句本质的区别。

2.2 while 语句的工作机制

下面我将给读者们展示一张流程图(不要眨眼哦~)
详解C语言中的循环语句_第1张图片
首先上来就是进行条件判断,如果此条件为真,就进入循环体,执行循环体中的语句,当执行完循环体的语句时,又会回到最初的地方接着执行判断表达式,如此循环反复。如果条件为假,则就不会执行循环体里面的语句,我们经常讲这个为"跳过循环"。

总之,你只需要记住一句话,判断表达式为真,就执行循环语句的内容,接着再判断。判断表达式为假,结束循环。

2.3 while 循环的实践

讲了这么知识,是时候该我们上场表演了。

例子1:在屏幕上打印1~10的数字

#include
int main()
{
	int num = 1;
	while(num <= 10)
	{
		printf("%d ",num);
		num = num + 1; //熟练的读者,直接用num++
	}
	return 0;
}

例子2:
详解C语言中的循环语句_第2张图片

#include
int main()
{
	int num = 0;
	scanf("%d", &num);
	while(num) //至于为什么将num作为判断表达式,请读者细品。
	{
		int temp = num % 10;
		num = num / 10;
		printf("%d ", temp);
	}
	return 0;
}

详解C语言中的循环语句_第3张图片

3. for 循环

上面讲解完了循环三巨头之一的while循环,接着我们讲 for 循环

3.1 for 循环语法

for(表达式1;表达式2;表达式3)
	语句;//如果循环想要表达更多的语句内容时,记得加上大括号哦!

表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整

3.2 for 循环的工作机制

详解C语言中的循环语句_第4张图片
首先执行表达式1初始化循环变量,接下来,就执行表达式2的判断部分,表达式2的结果如果为假,则循环结束;表达式2的结果如果为真时,则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行条件判断,表达式2的值是否为假,决定着循环是否继续。

不难发现,在整个循环的过程中,表达式1只在一开始执行了1次,后面的操作它都不参与了,剩下的就是表达式2、循环语句、表达式3在循环执行 直至循环退出。

3.3 for 循环实践

例子1:在屏幕上打印1~10

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

在这里,你可以对比while循环的写法,感受它们两个的区别。

例子2:计算1~100 之间的3的倍数的数字之和
详解C语言中的循环语句_第5张图片
写到这里,聪明的读者们就会提出一个疑问,那我们能不能直接去除掉没有必要的循环和判断?
有!!!睁大眼睛看好了

详解C语言中的循环语句_第6张图片

4 do while 循环

我们只剩下一个循环巨头没讲了,那就是do while循环

4.1 do whlie循环语法

do 
{
	语句;
}while(判断表达式);

这里需要注意一个点,也是初学者最容易遗忘的点。那就是,while的判断表达式后面记得加上一个";"。

4.2 do while循环的工作机理

在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。详解C语言中的循环语句_第7张图片
do while循环中先执行图上的“语句”执行完语句后,再去执行"判断表达式",判断表达式的结果是**!=0**,则继续执行循环语句;判断表达式的结果是**==0**,则结束循环。

所以在do while语句中循环体至少是执行一次的,这个也正是do while区别于其他循环语句的特点。

4.3 do while循环实践

例子1:在屏幕上打印1~10的值

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

例子2:输入一个整数,计算这个整数是几位数?
详解C语言中的循环语句_第8张图片

5. break 和 continue语句

在执行循环的过程中,如果发生了某些特殊的情况,导致我们想提前终止循环,那该怎么办?
C语言就给我们提供了两种语句:break 和 continue

那它们有什么区别?
下面我来讲解一下。

如果我们想终止循环,有两种形式:

  1. 终止本次的循环,提前进入下一次的循环。(continue)
  2. 彻底终止循环。(break)

break:用于永久的终止循环,只要break执行,直接就会跳出循环,继续往后执行别的语句。
continue:用于跳过本次循环中的continue后面的代码,在for循环和while循环中有所差异。

5.1 break举例

#include
int main()
{
	int i = 1;
	while(i <= 10)
	{
		if(i == 5)
			break; //当i等于5后,就执行break,循环就终止了
		printf("%d ", i);
		i++;
	}
	return 0;
}

打印了1,2,3,4后,当i等于5的时候,循环在 break 的地⽅终⽌,不再打印,不再循环。
所以 break 的作⽤就是永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了。

那以后我们在循环中,想在某种条件下终⽌循环,则可以使⽤ break 来完成我们想要的效果。

5.2 continue举例

continue 是继续的意思,在循环中的作⽤就是跳过本次循环中 continue 后边的代码,继续进⾏下⼀次循环的判断。

上⾯的代码,如果把 break 换成 continue 会是什么结果呢?

#include
int main()
{
	int i = 1;
	while(i <= 10)
	{
		if(i == 5)
			continue;
			//当i等于5时,执行continue语句,直接跳过continue后面的语句,回到循环判断的地方
			//因为这里跳过了i++,所以i一直是5,程序陷入了一个死循环
		printf("%d", i);
		i++;
	}
	return 0;
}

到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接
到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成
死循环。

这里补充一个点,当遇到多层循环嵌套时,break和continue本质上都是只能跳出一层循环

6.goto语句

C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。其本质就是强制改变编译器执行语句的顺序。

例如:

#include
int main()
{
	printf("今天学习了吗?\n");
	goto next;
	printf("包学习的!\n");

next:
	printf("跳过了\"包学习的!\"的打印\n");
	return 0;
}

我们都说事物有优势,亦有其弊端。
如果goto语句使用不当,就导致函数内部的语句随意跳转,打乱了程序的执行顺序,所以我的建议是能不用尽量不去使用,但是goto语句也不是那么一无是处的,在多层循环的代码中,如果想快速跳出使用goto就非常方便了。

for(...)
{
	for(...)
	{
		for(...)
		{
			if(disaster)
				goto error;
		}
	}
}

error:
	

本来for循环中的break语句一次只能跳出一层循环,如果要跳出3层循环嵌套就得使用3个break才能跳出循环,所以这种情况下我们使用goto语句是最快捷的方式。

7. 总结

在本章节,我们讲解了三大循环语句(while、for、do while),还讲解了break和continue语句的用法(强制打断循环的内容),顺便对goto语句也提了一嘴。
希望这些知识,读者们下来能够好好的理解吸收!!!

如果觉得文章写得不错的话,记得点个免费的赞。

学习很难,但坚持一定很酷!!!

你可能感兴趣的:(C语言,c语言,开发语言)