目录

前言:

1.循环语句是什么?

2.while循环语句:

2.1.while循环的语法以及使用

2.2.while循环中的break语句

2.3.while循环中的continue语句

 3.for循环

3.1.for循环的语法以及使用

 3.2.对比while循环以及for循环

3.3.for循环中的break语句和continue语句

3.4.for循环的一些变种

4.do while 循环

4.1.do while循环语法以及使用

4.2.do while循环中的break语句和continue语句

总结



前言:

c语言中有三种循环语句:while循环、do while循环、for循环,下面我会一一介绍它们的用法和它们各自的特点。


1.循环语句是什么?

学会循环语句我们首先搞明白什么是循环语句。循环语句是用于重复执行某条语句(循环体)的语句,它包含三个部分,分别是初始化部分、判断部分和调整循环部分。C语言提供了3中循环语句,分别为while语句do while语句for语句

举个例子:

只要坚持买彩票和学习我们终会走上人生巅峰,当然这也是我举得不是那么不恰当的例子,图片中的黑线就是我们一直循环的部分,红线蓝线就是终止循环的条件。一个完整的循环语句不仅要有循环判断条件表达式,还要有循环语句。


2.while循环语句:

2.1.while循环的语法以及使用

while循环的语法结构类似选择语句中的if语句。

if(表达式)
    {语句;}

//while循环的语法
while(表达式)
{
    循环语句;
}
        

注意:当while循环的表达式为真时,程序进入循环体内执行循环体内的语句。

了解了语法结构,下面我来书写一个简单的小程序,通过while循环来打印1-10数字。运行代码如下:

#include<stdio.h>

int main()
{
	int n = 1; //创建一个临时变量来存放打印的值
	//当表达式为真时才进入循环
    while (n <= 10)
	{
		printf("%d ", n);    
        n++;//调整循环的部分
	}
	return 0;
}

倘若没有调整循环的语句(n++),每次都是n=1进入while循环,程序会变成死循环,如下图所示:

while循环中一定要注意在循环体内调整循环的次数。

2.2.while循环中的break语句

在之前的switch语句学习中,我们知道break语句在选择语句是有打破该次语句的意思。在while循环内也是一样,当程序运行到break语句后会结束该次循环。下面我还是以上面代码为例加入break语句。

#include<stdio.h>

int main()
{
	int n = 1; //创建一个临时变量来存放打印的值
	//当表达式为真时才进入循环
    while (n <= 10)
	{
        if (n == 4)
            break;
		printf("%d ", n);    
        n++;//调整循环的部分
	}
	return 0;
}

 这时为什么屏幕上输出的是1 2 3呢?因为当n=3时n++后,程序进入循环,if(n == 4)语句为真,程序走到break语句的代码行,执行break语句后循环结束,所以屏幕上只会输出1 2 3.

break语句在while循环的作用:

在while循环中,只要遇到break就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。

2.3.while循环中的continue语句

首先我给大家出一道题目

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

请问当程序运行时,屏幕上输出的数字什么呢?

1 2 3 4 

1 2 3 4 5

1 2 3 4 5 6 7 8 9 10

1 2 3 4 6 7 8 9 10

continue在while循环中的作用:

continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

所以上面的程序当i++的值为5时,if(i == 5)为真,执行continue语句,本次循环结束返回while循环表达式进行判断。此时i依旧=5,又进入if( i ==5)语句中,再次执行continue语句。程序死循环了,所以屏幕上输出的是1 2 3 4


 3.for循环

3.1.for循环的语法以及使用

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

{

        循环语句;

}

 表达式1为初始化部分,用于初始化循环变量的。

 表达式2为条件判断部分,用于判断循环时候终止。

 表达式3为调整部分,用于循环条件的调整。

下面使用for循环来打印1-10的数字,代码如下

#include<stdio.h>

int main()
{
	int i = 0;

	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}

	return 0;
}

下面是运行的结果:

 3.2.对比while循环以及for循环

#include<stdio.h>

int main()
{
	int i = 0;
      //初始化部分;判断部分;调整循环部分
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}


int main()
{
	int n = 1; //初始化部分
	
    while (n <= 10)//判断部分
	{
		printf("%d ", n);    
        n++;//调整循环的部分
	}
	return 0;
}

通过对比我们发现,由于语法问题while循环的三个部分的位置彼此之间并不想连,不方便集中管理和修改。for循环的三个部分相连,语法风格更胜一筹,这就是为什么for循环是最常用的循环语句。

3.3.for循环中的break语句和continue语句

还是和上面while循环代码一样

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 4)
			break;
		printf("%d ", i);
	}
	return 0;
}

代码运行结果:

break语句在while循环和for循环中的效果是一样的,都是终止其所在循环语句。

continue语句在for循环中的代码以及与运行结果:

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
	}
	return 0;
}

这里我们可以看到,程序运行结束后并没有像while循环那样进入死循环,而是在屏幕上输出了1 2 3 4 6 7 8 9 10 这九个数。因为当i++ 后i = 5时,进入循环部分后,if(i == 5)为真,执行continue语句,然后不执行continue语句后面的部分,程序又回到 i++,然后程序直到 i <= 10 为假结束循环。所以当continue放在调整循环次数语句后面时,容易造成程序的错误。

3.4.for循环的一些变种

史上最简单for循环
int main()
{
	
	for (;;)
	{
		printf("haha\n");
	}
	return 0;
}

for循环的初始化部分、判断部分、调整部分都是可以省略的,但是不建议随意省略,容易造成程序的错误。

当我们运行这个代码:

屏幕上无休止的输出"haha",这是因为我们省略了判断部分,调整部分。

for循环的嵌套

#include<stdio.h>

int main()
{

	int i = 0;
	for (i = 0; i < 10; i++)
	{
		int j = 0;
		for (j = 0; j < 10; j++)
		{
			printf("hehe ");
		}
		printf("\n");
	}

	return 0;
}

运行程序时,本次循环会打印多少次"haha"呢?接下来我们让程序运行起来看看结果:

 这里程序从外层循环进入,再通过 外层循环i进入内层循环 j中。0当 i=0 时,程序从外层循环来到 内层循环,进入内层循环后 ,内层循环只有在 j < 10 是终止循环 ,再从内层循环回到外层循环中。外侧循环的第一次循环结束,此时内层循环已经循环了10次 printf("hehe");。所以当外层循环执行完最后一次后,此时程序应该输出100(10 * 10) 次hehe。

如果省略掉初始化部分,下面的程序会打印多少个hehe?

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	for (; i < 10; i++)
	{
		for (; j < 10; j++)
		{
			printf("hehe ");
		}
	}
	return 0;
}

下面是代码的运行结果

为什么程序这里只打印了10个hehe呢?

让我们按键盘的f10进行调试,同时在打开监视窗口,打开监视窗口步骤如下:

此时我们对代码进行调试并且监视

 下图为第一次执行打印以及j值得变化

下图为来到内循环最后一步

 

 这时我们发现程序只进入了一次内循环,内循环结束后,程序返回外循环,此后程序不再进入内循环进行打印。所以屏幕上只打印了10个hehe 而不是100个hehe。省略初始化会导致程序不受我们的控制,建议不要随意省略for循环的初始化部分。

我们也可以通过多变量来控制for循环

int main()
{
	int i = 0;
	int j = 0;
	for (i = 0, j = 0; i < 2 && j < 5; ++i, j++)
	{
		printf("hehe\n");
	}
	return 0;
}

代码运行结果:

这里因为当循环++i 等于 2时,for循环的判断部分为假,循环结束。所以只会打印两次。

最后我给大家留一道小小的题目,可以在留言区告诉我你的答案。

//请问该循环执行多少次?
#include <stdio.h>
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)
        k++;
 return 0;
}

4.do while 循环

4.1.do while循环语法以及使用

do 
{
    循环语句;
}while(表达式);

do while循环与while循环的语法类似,不同的是do while循环至少会执行一次循环体内的内容。因此使用场景有限,不是经常被使用。

下面是在屏幕上输出1-10数字,使用do while循环的代码

#include <stdio.h>
int main()
{
	int i = 1;//初始化部分
	do
	{
		printf("%d ", i);
		i = i + 1;//调整部分
	} while (i <= 10);//判断部分
	return 0;
}

4.2.do while循环中的break语句和continue语句

break语句实现:

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		if (4 == i)//把常量放在前面可以避免出错
			break;
		printf("%d ", i);
		i = i + 1;
	} while (i <= 10);

	return 0;
}

 

continue语句实现:

#include <stdio.h>
int main()
{
	int i = 1;

	do
	{
		if (5 == i)
			continue;
		printf("%d ", i);
		i = i + 1;
	} while (i <= 10);

	return 0;
}

通过代码演示,可以发现do while循环中的continue语句和break语句与while循环中的用法和特点是一样的。


总结

本篇博客依次介绍了while循环、for循环 以及do while循环。循环语句是C语言语法中很重要的一环,看完了本篇博客也许你有些许收获,但是也请你一定要动手敲敲代码,实践是检验所学知识的重要途径。最后祝愿你能学有所成!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐