C语言中提供了三种循环,其中包括while循环,for循环和do while循环。
while循环
1.基本语法形式:
while(条件表达式)
语句;
当然当while循环内语句超过一句时便应用{}括起来。
例如:打印1到10的数
#include <stdio.h>
int main()
{
int i = 1;//1.初始化
while(i<=10)//2.条件的判断
{
printf("%d ", i);//语句超过一句便用{}
i = i+1;//3.对变量的调整
//每次i都+1,循环完一次就要到条件表达式去判断循环是否应该继续
}
return 0;
}
如上面示例所示,一般来说while循环都会包含有以上三个过程:1.初始化2.条件的判断3.对变量的调整。
但在while循环中这三个过程会随着循环语句复杂程度的增加而分散开。
(在下文会与for循环形成对比)
for循环
1.基本语法形式:
for(表达式1; 表达式2; 表达式3)
语句;
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
(不同之处)从这里来看for循环也相应拥有上文中while循环所拥有的三个过程,但与之相比for循环的这三个过程都紧跟在for之后,更加集中,也易于我们的操作与调整,这也是for循环在循环语句中使用最多的部分原因。
相同之处它们的循环过程都可以按以下流程进行:
初始化——>条件的判断——>语句表达——>对变量的调整——>条件的判断(循环开始)
示例:与上文while相同,打印1到10的数
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
do while循环
1.基本语法形式:
do
语句;
while(表达式);
相较于其他两种循环,该循环的流程有所不同:对于for循环与while循环,它们都是先进行条件判断再进行语句的表达,而do while循环则是直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,而for与while循环则不一定能够执行。
⼀般 do while 使用在循环体⾄少被执行⼀次的场景下,所以是循环中被使用最少的。
示例:打印1到10的数
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}
以上仅仅是对三大循环语句的简单介绍,但我们在某些特殊状况发生的时,需要提前终⽌循环,在这时候便要用到break语句和continue语句,而这些语句在三大循环中的使用也存在着异同。
break语句和continue语句
break 的作用是用于永久的终⽌循环,只要 break 被执行,直接就会跳出循环,继续往后执行。
continue 的作用是跳过本次循环 continue 后边的代码,即会直接跳到条件表达式来进行下一轮的条件判断。在 for 循环和 while 循环中有所差异的。
while循环中的break和continue
break的示例:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;//当i等于5后,就执⾏break,循环就终⽌了
//因此输出的结果就只有1 2 3 4
printf("%d ", i);
i = i+1;
}
return 0;
}
break 的作用就是永久的终止循环,只要 break 被执行, break 外的第⼀层循环就终止了。
continue的示例:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
//当i等于5后,就执⾏continue,直接跳过continue之后代码,直接到了条件表达式,进行下一轮循环的条件判断。
//因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环。
//输出结果为1 2 3 4 _(_表示死循环)
printf("%d ", i);
i = i+1;
}
return 0;
}
continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接
到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。
for循环中的break和continue
break的示例:
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ", i);
//输出结果与while循环中的break相同为:1 2 3 4
}
return 0;
}
continue的示例:
(注意对比与while循环中continue的差异)
#include <stdio.h>
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
printf("%d ", i);//因此5未能被打印出来输出结果为:1 2 3 4 6 7 8 9 10
}
return 0;
}
回顾一下while循环中含continue语句的代码:
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
在while循环中的结果为1 2 3 4 _死循环,而造成此结果的原因便是因为while语句中的i = i+1语句在continue语句的后面,被跳过了,故出现了打印出的结果不同。
而想要while语句中打印出的结果与for语句中相同可将i = i+1语句放在continue语句前,但是其他前置条件也会发生相应的变化。
如下:
#include <stdio.h>
int main()
{
int i = 0;
while(i <10)
{
i = i+1;
if(i == 5)
continue;
printf("%d ", i);
}
return 0;
}
do while循环中的break和continue
break的示例:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if(i == 5)
break;
printf("%d ", i);
i = i + 1;
}while(i<=10);//输出的结果为1 2 3 4
return 0;
}
continue的示例:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if(i == 5)
continue;
printf("%d ", i);
i = i + 1;
}while(i<=10);//输出结果为1 2 3 4 _
return 0;
}
由以上两个示例我们可以发现do while语句中的break与continue造成的影响与while语句中的相同。
总的来说:1.break在三大循环语句中的作用是相同的,即同样的代码输出的结果是相同的。
2.do while与while循环中的break和continue的作用是相同的。
3.唯一不同的便是continue在for循环与while循环(do while循环)中会有不同的作用。
当然啦,这三大循环语句可进行嵌套,以满足不同条件需求。
以上便是C语言中三大循环语句的所有内容,以上内容如有不妥,恳请大佬指正,本人just a 正在成长的萌新。