【C】循环(一看就懂)——while、for、do while、goto

在这里插入图片描述
博客主页:心辛向荣
系列专栏:【从0到1,C语言学习】
一句短话:你若盛开,蝴蝶自来!
博客说明:尽己所能,把每一篇博客写好,帮助自己熟悉所学知识,也希望自己的这些内容可以帮助到一些在学习路上的伙伴,文章中如果发现错误及不足之处,还望在评论区留言,我们一起交流进步!😊


💻前言

🍁总结while循环、for循环、do while循环以及break和continue在循环语句中的作用

🍁循环语句以及break、continue语句都属于属于C语言当中的控制语句大类,break和continue属于转向语句

🍁生活中的很多事情都需要我们日复一日的反复去做,这就是循环;而在C语言当中要实现循环就需要用到这些循环结构的语句


💻目录

1️⃣while循环
——语法
——1.1 实现while循环的三个部分
——1.2 while语句中的break和continue
2️⃣for循环
——语法
——2.1 for循环中的break和continue
——2.2 for循环和while循环的对比
——2.3 for语句的循环控制变量
——2.4 一些for循环的变种
3️⃣do while循环
——语法
4️⃣goto语句
——语法


💻.1 while循环

语法结构

while(表达式)

{

循环语句;

}

当表达式部分为真时循环体内的循环语句执行,新学时有一个容易混淆点的:while(表达式);注意这里是不可以加分号的,分号代表一条语句的结束,如果加上分号,后面的循环语句便不会执行;后面介绍的for循环同样的也是不可以用加分号这种写法的。
在这里插入图片描述

1.1 实现while循环的三个部分

要实现一个循环是需要三个部分的,初始化部分,判断部分,调整部分。
看这段代码理解这三个部分

//在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{
	int i = 1;//初始化部分
	while (i <= 10)//判断部分
	{
		printf("%d ", i);
		i++;//调整部分
	}
	return 0;
}

while循环的缺陷是当我们随着能力的提升,如果我们写了很长的一个代码在循环中,这三个部分就会因为相距太远而导致代码不好维护和修改,有些时候就会不方便使用,而后面介绍的for循环就可以解决这种顾虑。

1.2 while语句中的break和continue

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

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (5 == i)
			break;

		printf("%d ", i);
		i++;
	}

	return 0;
}

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

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

	return 0;
}

在这里插入图片描述


💻.2 for循环

语法结构

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

{

循环语句;

}

表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环什么时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
在这里插入图片描述

2.1 for循环中的break和continue

不管在哪种循环中,break和continue的作用都是一样的,但因为不同的循环结构上有所差异,会有一些效果上的不同,在下面对俩种循环的代码进行对比。

2.2 for循环和while循环的对比

用while循环写出这个代码,当使用了continue跳过了调整部分,i的值由于不能进行调整,i会一直等于5导入这个程序陷入死循环当中

#include<stdio.h>
int main()
{
	int i = 1;//初始化
	while (i<=10)//判断
	{
		if (i == 5)
			continue;

		printf("%d ", i);
		i++;//调整
	}

	return 0;
}

在这里插入图片描述
那么用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循环和for循环的三个调整部分,while由于风格的问题使得三个部分很可能偏离较远,查找修改就不够集中和方便,但一样效果使用for循环也可以实现,所以,for循环的风格更胜一筹;for循环使用的频率也最高。

2.3 for语句的循环控制变量

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
如果在循环体内修改循环变量可能会使程序局部出现问题而影响整个程序的运行

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
	    i = 20;//错误示范,不可以采取这种做法,会出现问题
		printf("%d ", i);
	}
	return 0;
}

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法
看下面的俩种代码风格,要知道我们写代码要尽可能的保证代码的可读性,而采用前闭后开的写法这里判断部分的10就有了一些象征意义,它是循环10次,更方便理解阅读代码。

int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}

2.4 一些for循环的变种

for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题。

#include<stdio.h>
int main()
{
	int i = 0;
	for (;;)//for循环的判断部分省略意味这判断会恒成立,会导致死循环
	{
		printf("hehe\n");
	}

	return 0;
}

for循环嵌套循环

#include<stdio.h>
int main()//代码1
{
	int i = 0;
	int j = 0;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			printf("hehe\n");
		}
	}
	return 0;
}


#include<stdio.h>
int main()//代码2
{         //俩个代码的效果是一样的
	int i = 0;
	int j = 0;
	for (; i < 10; i++)//省略初始化部分
	{
		for (j = 0; j < 10; j++)
		{
			printf("hehe\n");
		}
	}


	return 0;
}

可以使用多个变量控制循环

#include<stdio.h>
int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; x++, y++)
	{
		printf("hehe\n");
	}
	return 0;
}

💻.3 do while循环

语法结构

do

{

循环语句;

}while(表达式);

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

这里注意与for循环与while循环区分,这里因为判断部分在循环语句的最后,所以必须加分号来结束循环语句。
do语句的特点:
循环至少执行一次,使用的场景有限,所以不是经常使用。


在这里插入图片描述

#include <stdio.h>
int main()//代码1:打印1到10
{
    int i = 1;
    do
    {
        printf("%d\n", i);
    } while (i <= 10);
    return 0;
}


#include <stdio.h>
int main()//代码2:使用continue的效果
{
    int i = 1;

    do
    {
        if (5 == i)
            break;
        printf("%d\n", i);
    } while (i <= 10);

    return 0;
}


#include <stdio.h>
int main()//代码3:使用break的效果
{
    int i = 1;

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

    return 0;
}

💻.4 goto语句

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
语法结构
在这里插入图片描述

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改.
goto语言真正适合的场景如下:

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
    …
error:
 if(disaster)
         // 处理错误情况

💻结语

各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗(关注✌️点赞✌️评论✌️)!!!
感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步!!!加油!!!

在这里插入图片描述

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韵秋梧桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值