前言
在C语言当中循环是一个运用十分广泛的一种语法,本篇博客就要分别介绍一下C语言中间的三类循环
for循环
for循环在博主看来是最重,要最简便的一种循环,固定的格式,让程序员使用它的时候思路更加清晰,更加得心应手,下面我们来看看for循环的基本用法
int main()
{
//输出1-10之间的数字
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);//1 2 3 4 5 6 7 8 9 10
}
return 0;
}
for循环里面有三个表达式for(表达式1;表达式2;表达式3)每一个表达式都用“;”隔开,记住哦,是分号,不是冒号!初学者很容易写成冒号。
- 表达式1:循环的起始语句,代码中起始语句为,把1赋值给i。
- 表达式2:循环的判断语句,代码中判断语句为,i小于等于10吗?如果满足就进入循环
- 表达式3:循环的结束语句,代码中 结束语句为,i++(i = i + 1)及每次循环结束之后i的值加1.
三个表达式极为重要的是表达式2和表达式3,我们来分析一下
如果没有表达式3,循环就会变成死循环,因为i永远是1,我们可以把表达式2当作循环的终止语句,而表达式3就是想尽一切办法,使得每次循环后,i能够贴近表达式2的终止条件。
当然表达式1,表达式2,表达式3也都可以不写,例如:
都不写将会是无限循环下去,因为没有终止条件。
也可以把表达式3写在循环的最后,运行结果和第一张图片一样的
所以我们要明白for循环的三个表达式不一定都要写,但是一定要有循环终止的条件和无限靠近循环终止的结束语。
while循环
while循环和for循环类似,核心点都是要有循环终止和无限靠近循环终止的结束语句,但是while循环并没有for循环一样的固定格式,而只有一个判断语句,我们看下面的代码:
int main()
{
//输出1-10之间的数字
int i = 1;
while (i<=10)
{
printf("%d ", i);//1 2 3 4 5 6 7 8 9 10
i++;
}
return 0;
}
while循环格式:while(判断语句),满足判断语句条件进入循环,但是他没有让你写循环结束语句,这需要你自己添加,如果忘了添加,这个循环就变成了死循环,所以while语句一样很重要的是,条件判断语句和结束循环语句,基本用法和for循环一致,可以说是两种形态的亲兄弟,没有什么特殊的地方,所以博主在这里推荐大家使用for循环
但是while循环真的没有什么特殊的地方吗?其实也不全是,当你写代码积累一定数量会发现,当你不清楚循环结束标志的时候,一般用while循环会更好,可以先写一个死循环,然后满足条件直接跳出循环即可,例如;
int main()
{
int i = 0;
while (1)//1.当我们不知道循环结束条件时候先写1,让while死循环,先循环起来
{
if (满足条件)//3.再接着当循环满足一定的条件,我们直接用if判断
{
//.....
break;//4.之后直接break跳出循环就可以,相当于这里是循环结束的出口
}
//......
//......//2.之后我们在循环里面完成循环内容
//......
//......
printf("%d ", i);
i++;
}
return 0;
}
可能会有人觉得这样做有点多此一举,但很多时候都会用到这种方法,这种方法是根据自己的思路一步步走,会让你思路更加清晰。
do while循环
do while循环和前面的for循环while循环就不太一样,此循环有一个很重要的性质,先循环,再判断,而for循环和while循环都是先判断,满足要求之后再循环,我们来看下面的代码;
int main()
{
//打印1-10之间的数字
int i = 1;
do
{
printf("%d ", i);//1 2 3 4 5 6 7 8 9 10
i++;
} while (i<=10);
return 0;
}
do while循环格式为do{}while(判断条件);,可以看到他的判断条件是放在执行的最后,所以他先会执行一遍之后再做判断,无论满不满足要求,第一遍一定会执行,基于do while 的性质,我们用它用的非常少,只有特殊情况,比如说,一个游戏程序的开始,我们会用到,当你运行了这个程序,第一次就必须进去,开始游戏的选择,当你选择退出,判断语句判断之后即可退出。对于此循环我们了解会用即可。
在文章的最后,我们再来了解一下和循环密不可分的“break”语句和’continue"语句
- break语句:结束最近的整个循环,记住!是结束整个循环,无论怎样,不在循环下去。例如:
int main()
{
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);//1 2 3 4
}
return 0;
}
当我们i逐步变大,变为5的时候进入if语句,执行了break语句,就会跳出这整个循环,不再继续下去,所以打印出来的之后1-4。
- continue语句:结束此次循环,继续下一轮循环,我们来看代码实现:
int main()
{
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);//1 2 3 4 6 7 8 9 10
}
return 0;
}
当循环i变成5的时候,进去if循环,执行continue语句,跳过此次循环,continue下面的所有语句不再执行,所以就没有打印5这个数字,但是他没有跳出整个循环循环还在继续,只是这次的循环不再进行。