循环结构
正文开始,让我们来回忆一下,C语言是一个结构化的程序语言。有顺序结构、选择结构、循环结构。那C语言可以通过什么来实现这些结构呢。
我们可以通过if、switch来实现分支结构,通过for、while、do while来实现循环结构。
这一篇文章我将会对循环结构所涉及的语句展开详细讲解
1.while循环语句
2.for循环语句
3.do while语句
4.if和while的比较
5.for和while的比较
6.break、countinue的巧用
1.while循环语句
其实while语句和if语句的语法结构非常的相似。不信我给你看比较看一下下
没有忘记吧,这是if语句的语法结构。
1 if(表达式)
2 语句;
接下来我们来看看while语句的语法结构。
1 while(表达式)
2 语句;(如果循环体里有更多语句可以加上大括号)
没骗你们吧,是不是非常的相似!!!
while和if一样要先执行判断表达式判断语句为真还是假。当我们需要连续重复判断这组数值是就可以使用while语句来提高效率。比如我们需要在哎屏幕上打印1-10的值。
1 #include<stdio.h>
2 int main()
3 {
4 int i = 0;
5 while (i <= 10)
6 {
7 printf("%d ", i);
8 i = i + 1;
9 }
10 return 0;
11 }
知道为啥这里不用if吗?嘿嘿留到文章的后边揭晓答案大家可以先思考一下。
2.for循环语句
在我们之后的练习当中for循环就会是我们使用频率最高的一个语句,for语句的语法结构如下:
1 for(表达式1;表达式2;表达式3)
2 语句;(同样循环体有多个语句是要用大括号)
表达式1 用于循环变量的初始化 表达式2用于循环结束条件的判断 表达式3用于循环变量的调整 敲重点!!!表达式中间一定要记住用“;”不是","
我们利用同样的题目来为大家加深理解:
1 #include<stdio.h>
2 int main()
3 {
4 int i ;
5 for(i=1;i<=10;i++)
6 {
7 printf("%d ", i);
8 }
9 return 0;
10 }
简单吧大家也可以用手试一试。
do while循环语句
在循环语句中do while语句的使用相对较少,它的语法结构如下:
1 do
2 语句;
3 while(表达式);
while 和 for循环是不是都是先判断,如果条件满足就进入循环,不满足就跳出循环;而do while循环则是先进入循环体执行语句,直到while中表达式判断为假就跳出循环。do while语句的特别之处就在于它至少会执行一次。
同样的例子:
1 #include<stdio.h>
2 int main()
3 {
4 int i = 1;
5 do
6 {
7 printf("%d ", i);
8 i = i + 1;
9 }
10 while (i <= 10);
11 return 0;
12 }
当while里的表达式为假时就会跳出循环。
4.if和while的比较
前面我给大家留了一个悬念现在来通过两段代码来揭晓答案
1 #include<stdio.h>
2 int main()
3 {
4 if (1)
5 printf("hehe\n");
6 return 0;
7 }
1 #include<stdio.h>
2 int main()
3 {
4 while(1)
5 printf("hehe\n");
6 return 0;
7 }
这两段代码乍一看没啥太多不一样,但是运行出来的结果却是大相径庭。**第一段代码只会打印一次hehe;而第二段会死循环的打印hehe。**这就是if和while语句的差别if语句只会进行一次判断而while只要条件满足会一直进行判断执行。
5.for和while的比较
让我们来观察两张流程图
各位公主王子们能看出什么区别吗?
没错while循环和for循环的区别就在于循环变量的调整的顺序,while循环的调整往往都包含在循环体中,而for循环则是先要执行完循环体再进行调整。 之后我们可能在遇到循环体中变量值的打印等等题目会用到这个小细节大家留意哟!
6.break、continue的巧用
在循环执行过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue两个关键字
- break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行。
- continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有点点差别。
break举例:
1 #include<stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 if (i == 5)
8 break;
9 printf("%d ", i);
10 i = i + 1;
11 }
12 return 0;
13 }
打印了1,2,3,4之后,当i等于5是,执行break,不再打印,不再循环。只要break被执行,break外的第一层循环就终止了。我们之后在循环中,想要在某种条件下终止循环,则可以使用break来实现。
countinue的举例
1 #include<stdio.h>
2 int main()
3 {
4 int i = 1;
5 while(i<=10)
6 {
7 if (i == 5)
8 continue;
9 printf("%d ", i);
10 i = i + 1;
11 }
12 return 0;
13 }
我们可以从运行结果看到打印到4后程序始终没有结束,就是因为continue只能帮助我们跳过某一次循环continue后边的代码,也就是说在这段代码中当i=5时我们跳过了后面的变量调整,所以陷入了死循环始终i=5;
我在前面说到for循环和while循环的break和continue的使用略有差异,假如我们把这段代码用for循环会怎么样呢?!
1 #include<stdio.h>
2 int main()
3 {
4 int i = 1;
5 for(i=1;i<=10;i++)
6 {
7 if (i == 5)
8 break;
9 printf("%d ", i);
10 }
11 return 0;
12 }
break的使用效果是一样的,不管循环还需循环多少次,只要执行了break,循环就会彻底终止。
1 #include<stdio.h>
2 int main()
3 {
4 int i = 1;
5 for(i=1;i<=10;i++)
6 {
7 if (i == 5)
8 continue;
9 printf("%d ", i);
10 }
11 return 0;
12 }
这里的运行结果就和前边有一些区别了哟,这里也用到前文我和大家所说的for和while循环的小差别,这里的continue并不会影响for里面的循环变量的调整,所以打印出来的结果也只是跳过了5。
do while语句的break和continue的作用和while循环中几乎一模一样,大家可以自行测试并体会。
下一篇我将会单独写一篇关于goto语句循环的实际应用,并且还有出一篇运用分支和循环的知识做的扫雷游戏的讲解。各位公主王子们如果喜欢的换给孩子点点赞点点关注吧!!!