一:循环语句(for语句)
我们先从语句的基本语法讲起,
基本语法: for(表达式1; 表达式2; 表达式3)
循环语句;
表达式 1
表达式 1叫做 初始化部分 ,该部分用于初始化循环变量的。
表达式 2
表达式 2叫做 条件判断部分 ,该部分用于判断循环时候终止。
表达式 3
表达式 3叫做 调整部分 ,该部分用于循环条件的调整。我们在写for语句以及其他循环语句时必须要注意调整部分,不然非常容易造成死循环。
举例介绍for循环
题目: 使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++) //i=1:初始化; i<=10:判断部分; i++:调整部分 { printf("%d ", i); } return 0; }
对for循环的文解: 1:当编译器执行到了for循环后,先对初始化部分进行赋值 2:执行判断条件,若判断结果为假,则不进行循环,直接跳出循环:若为真,则执行循环语句 3:在循环语句结束后执行调整部分 4:如果遇见break语句,则跳出循环,整个循环结束 5:如果遇见continue语句,后面的循环语句不执行,直接跳出本次循环,执行后面循环的语句
for循环与while循环对比:
同样是打印1-10的数字
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"); }
while循环也存在这样三个部分,但是代码可能会很长导致三个部分距离很远,以至于代码不方便查找和修改;而对for循环而言较为略胜一筹,且for循环使用频率较高一些。
for语句的循环控制变量:
要求:
1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
什么叫做前开后闭?
for(int i=0;i<10;i++) { ...... } for(int i=0;i<=10;i++) { ...... }
上述i=0;i<10就是前闭后开,而i=0;i<=10是两边都关闭
关于for循环的变种:
(1)
#include <stdio.h> int main() { for(;;) { printf("hehe\n"); } //for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问 题 }
如果我们把该循环语句写成这样,循环则为死循环。因为判断条件为空,默认为true。
(2)
for循环支持嵌套使用,在for循环中可以在写for循环,支持无限套娃。
如
for(i=0; i<10; i++) { for(j=0; j<10; j++) { printf("hehe\n"); } }
结果会打印 i * j 个hehe
(3)
省略掉初始化部分,例如上一段代码
int i=0; int j=0; for(; i<10; i++) { for(; j<10; j++) { printf("hehe\n"); } }
那么结果会如何呢?
答案是只打印了10个hehe,因为既然省略了初始化,那么当j=10的时候,里面的for循环将不再继续执行了,两个for循环都已外部初始化的i、j为准。
二:do-while循环
基本语法:
do
循环语句;
while(表达式);
do表示执行的意思,do语句的特点就是至少执行循环一次。但是 使用的场景有限,所以不是经常使用。
同样do-while语句至少执行循环语句一次。
对do-while循环的文解: 1:当编译器执行到了do-while循环后,直接执行循环语句 2:执行完循环语句后,执行判断条件,若判断结果为假,则不进行循环,直接跳出循环:若为真,则执行循环语句 3:如果遇见break语句,则跳出循环,整个循环结束 4:如果遇见continue语句,后面的循环语句不执行,直接跳出本次循环,执行后面循环的语句
do-while与while的比较:
do-while循环会至少执行一次循环,而while可能会照成一次循环都不执行,直接跳出循环。
三种循环的使用频率:
一般的我们最常见的是用for循环,其次是while循环,最后才是do-while循环。
使用频率为: for>while>do-while