上节内容我们讲了if
和switch
,这节课我们讲while
和for
还有do while
,现在开始我们的学习吧。
- while
- for
- do while
1.while
在上个内容中我们学会if语句的用法
if(条件) 语句;
当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了: while 语句,可以实现循环。
下面我们来看while的基本语法结构
while (表达式) 语句
下面我们用while输出一个简单的程序
int main() { int i = 0; while (i < 10) { printf("好好学习\n"); i++; } return 0; }
上面我们可以看到用while语句输出十个好好学习,我们了解了while的语法结构,接下来我们继续深入了解while
1 while的break和continue
#include<stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) break; printf("%d\n", i); i++; } return 0; }
我们可以在编译器上看到打到五的时候停止,说明程序执行的时候,当i=5的时候退出while循环,所以break的作用是跳出循环并停止
break在while的作用总结:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:while中的break是用于永久终止循环的。
while的continue
在之前讲的内容中我们都没有遇到continue,在while中continue有着重要作用,让我们一起学习一下吧
#include<stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) continue; printf("%d\n", i); i++; } return 0; }
我们将上面的代码break改成continue 大家在编译器上可能看到的结果还是1234,但是我们可以看到有光标一直停留,说明他还在执行,我们的循环进入死循环,让我们来看一个原理图,可能画的有点丑
总结
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断.
讲到这里大家应该对continue了解了吧,那我们继续讲解for语句
for
1 语法结构
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; }
这就是for循环的基础用法,那我们现在对比一下for 和while 的不同
int i = 0; //实现相同的功能,使用while i=1;//初始化部分 while(i<=10)//判断部分 { printf("hehe\n"); i = i+1;//调整部分 } //实现相同的功能,使用while for(i=1; i<=10; i++) { printf("hehe\n"); }
我们可以看到for循环比较简单,for循环改的东西比较上,用起来也比较方便,但是for循环不是万能的,我们要根据不同条件下使用,结合for和while两个循环才能让你变得更加优秀
for循环的break和continue
在for循环中也有break和continue,那让我们来看看它的用法吧
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++) { if(i == 5) break; printf("%d ",i); } return 0; }
可以看到for循环的break和while的break的功能一样,也是终止循环的作用
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++) { if(i == 5) continue; printf("%d ",i); } return 0; }
continue也是和while一样
建议
- 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
- 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++) { i=2;//不建议改变循环变量 printf("%d ",i); } return 0; }
不建议改变循环变量
#include <stdio.h> int main() { int i = 0; for(i=1; i<10; i++)//指i变量的区间为前闭后开,[ , ) { printf("%d ",i); } return 0; }
for循环的变种