首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言初阶】别再分不清循环了!C 语言循环全家桶(含嵌套 + goto)超详细教程

【C语言初阶】别再分不清循环了!C 语言循环全家桶(含嵌套 + goto)超详细教程

作者头像
小龙报
发布2025-12-15 15:42:12
发布2025-12-15 15:42:12
2260
举报
文章被收录于专栏:C\C++C\C++

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《C语言》永远相信美好的事情即将发生

一、while

1.1 if和while的区别

代码语言:javascript
复制
if(表达式)
 语句;

while(表达式)
 语句;//如果循环体想包含更多的语句,可以加上⼤括号  

if只能执行一次while可以实现循环效果

1.2while的执行流程

在这里插入图片描述
在这里插入图片描述

首先执行while括号里的语句是否为假为假则跳出循环,否则就执行while的控制语句之后再次判断,直到不满足判断表达式

1.3while运用

1.3.1例:打印1到10的数字

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

执行结果:

在这里插入图片描述
在这里插入图片描述

1.3.1 例:逆序输出 例:输入1234,输出4321 解释:要获得一个数的最低位可以使用n %10; 去除一个数的最低位n / 10;

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);

	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;
	}
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

二.for循环

2.1语法规则

代码语言:javascript
复制
for(表达式1; 表达式2; 表达式3)
 语句;//如果循环体想包含更多的语句,可以加上⼤括

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

2.2for循环的执行流程

在这里插入图片描述
在这里插入图片描述

2.3for循环的实践

例:打印1到10的数

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	for (int i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

运行结果

在这里插入图片描述
在这里插入图片描述

我们可以看出for循环的代码比while代码更加简洁,因此我们在使用循环时首先应该考虑for循环 例:打印1到100中3的倍数的数字的和

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int sum = 0;

	for (int i = 3; i <= 100; i += 3)
		sum += i;

	printf("%d",sum);
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

2.4for循环与while循环的对比

在这里插入图片描述
在这里插入图片描述

从上述两段代码对比可以看出for比起while循环的三部分更加集中,while则会比较分散,由此可以从形式上来看for循环更优一点

三.do-while循环

3.1语法规则

代码语言:javascript
复制
do
 语句;
while(表达式);

注:while 和 for 都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。

3.2执行流程

在这里插入图片描述
在这里插入图片描述

注:do-while循环最特殊的地方是 - -> 循环体至少执行一次

3.3do-while循环的实例

例:打印1到10;

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} 
	while (i <= 10);
	return 0;
}

执行结果

在这里插入图片描述
在这里插入图片描述

注:基于do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。 但我们也有一些场合使用do-while循环可能会更好一点 例: 输⼊⼀个正整数,计算这个整数是⼏位数? 例如: 输⼊:1234 输出:4 输⼊:12 输出:2

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);

	int ans = 0; //计算位数
	do  //处理特殊情况0
	{
		n /= 10;
		ans++;
	} 
	while (n);

	printf("%d", ans);
}

运行结果

在这里插入图片描述
在这里插入图片描述

四.continue和break的应用

continue:跳过代码中continue后面的语句,并跳过本次循环; break:跳过本次循环

4.1while循环和for循环中的break和continue

4.1.1break举例

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int i = 1;

	while (i <= 10)
	{
		printf("%d ", i);
		if (i == 5)
			break;  //当i等于5后,就执⾏break,循环就终⽌了
		i++;
	}
	return 0;
}

运行结果

在这里插入图片描述
在这里插入图片描述

我们可以看到打印了1,2,3,4后,当i等于5的时候,循环在 break 的地⽅终⽌,不再打印,不再循环。由此我们可以看出break的作用 永久的终⽌循环,只要 break 被执⾏, break 外的第⼀层循环就终⽌了

4.1.2continue举例

例:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	int i = 1;

	while (i <= 10)
	{
		printf("%d ", i);
		if (i == 5)
			continue;  //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅ 
                       //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环 
		i++;
	}
	return 0;
}

因为运行结果死循环这里就不给大家展示了

4.2for循环和for循环中的break和continue

4.2.1break举例

代码语言:javascript
复制
#include <stdio.h>
int main()
{

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

		if (i == 5)
			break;  
	}
	return 0;
}

这段代码和while的那段代码本质意思一样这里就不过多解释了 运行结果:

在这里插入图片描述
在这里插入图片描述

4.2.2continue举例

代码语言:javascript
复制
#include <stdio.h>
int main()
{

	for(int i = 1;i <= 10;i++)
	{

		if (i == 5)
			continue;   //这⾥continue跳过了后边的打印,来到了i++的调整部分 

		printf("%d ", i);
	}
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

注: for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤continue 来实现

4.3while和for 中continue的区别

在这里插入图片描述
在这里插入图片描述

do-while循环中的break和continue语句的作用几乎与while一模一样大家就自行体会啦,有任何疑惑也可以在评论区发出,如果笔者知到一定会为大家解答的

五.循环的嵌套

例:找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字 题目解析: 假设要判断i是否为素数,需要拿2i-1之间的数字去试除i,需要产⽣2i-1之间的数字,也可以使⽤循环解决。 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

代码语言:javascript
复制
 #include <stdio.h>
int main()
{

	for(int i = 100;i <= 200;i++)
	{
		int flag = 0;  //假设i是质数
		for (int j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 1;
				break;
			}
		}
		if (flag == 0)
			printf("%d ",i);
	}
	return 0;
}

运行结果

在这里插入图片描述
在这里插入图片描述

六.go-to语句

C语言提供了⼀种非常特别的语法,就是 goto 语句和跳转标号,goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。 例:

代码语言:javascript
复制
#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");

next:
	printf("跳过了haha的打印\n");
	return 0;
}

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出使⽤ goto 就⾮常的⽅便了。 例:

代码语言:javascript
复制
for(...)
{
 for(...)
 {
 for(...)
 {
 if(disaster)
 goto error;
 }
 }
 }
error:
 //...

在这段代码,本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。

总结

本文介绍了C语言中三种循环结构(while、for、do-while)以及控制语句(break和continue)的使用方法。重点分析了while与if的区别、for循环的简洁性以及do-while循环至少执行一次的特点,并通过数字打印、逆序输出等实例进行说明。同时比较了不同循环中break和continue的差异,最后以素数判断为例展示了循环嵌套的应用。全文通过代码示例和流程图帮助读者理解循环结构的工作原理和适用场景。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、while
    • 1.1 if和while的区别
    • 1.2while的执行流程
    • 1.3while运用
  • 二.for循环
    • 2.1语法规则
    • 2.2for循环的执行流程
    • 2.3for循环的实践
    • 2.4for循环与while循环的对比
  • 三.do-while循环
    • 3.1语法规则
    • 3.2执行流程
    • 3.3do-while循环的实例
  • 四.continue和break的应用
    • 4.1while循环和for循环中的break和continue
    • 4.1.1break举例
    • 4.1.2continue举例
    • 4.2for循环和for循环中的break和continue
    • 4.2.1break举例
    • 4.2.2continue举例
    • 4.3while和for 中continue的区别
  • 五.循环的嵌套
  • 六.go-to语句
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档