💻前言
🍁总结while循环、for循环、do while循环以及break和continue在循环语句中的作用
🍁循环语句以及break、continue语句都属于属于C语言当中的控制语句大类,break和continue属于转向语句
🍁生活中的很多事情都需要我们日复一日的反复去做,这就是循环;而在C语言当中要实现循环就需要用到这些循环结构的语句
💻.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) // 处理错误情况
💻结语
各位小伙伴,看到这里就是缘分嘛,希望我的这些内容可以给你带来那么一丝丝帮助,可以的话三连支持一下呗(关注✌️点赞✌️评论✌️)!!!
感谢每一位走到这里的小伙伴,我们可以一起学习交流,一起进步!!!加油!!!