循环结构分为while循环,do...while...循环,for循环
1.while循环
格式:
while(条件)
循环体 // 当条件成立时执行
循环的执行顺序:由上至下顺序执行
例如:
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
这是一个求最大公约数的案例,当我们无法确定循环次数只知道循环条件时,这个时候我们可以选择使用while循环或者do...while循环
2.do...while...循环
格式:
do
{
循环体
}
while(条件)
循环执行顺序:由上至下顺序执行
同样的最大公约数问题使用do...while...循环来进行编写时是这样的:
do
{
r=a%b;
a=b;
b=r;
}
while(r!=0)
我们与上一个程序段进行比较,可以发现,while循环是先判断,后执行;do while循环是先执行,后判断。
while循环与do while循环没有什么区别,主要是在我们个人编译的时候方便我们个人习惯而制定的不同编程方式
3.for循环
格式:
for(表达式1;表达式2;表达式3)
{
循环体
}
循环执行顺序:
表达式1的值是否满足表达式2的条件,若不满足,则直接跳出当前循环;若满足,则执行循环体一次,执行完循环体再跳转到表达式3,得出一个值,再返回到表达式2看看是否仍然满足表达式2的条件,若满足,则继续执行循环体一次,执行完循环体再跳转到表达式3,得出一个值,以此类推......
简单来说for循环的执行顺序大致是:
表达式1--->表达式2--->循环体--->表达式3
例如:
s=0;
for(i=0;i<10;i++)
s=s+i;
printf("%ld",s);
这是一个求s=1+2+3....+9的和的例子,利用for循环可以大大减短程序长度,提高程序的可读性
一般来说当我们知道循环次数却又不知道循环条件时,建议使用的是for循环
4.循环嵌套
最长听到的是for循环的嵌套,其实所有的循环结构都可以嵌套,而且都可以进行无限嵌套
4.1while的多重嵌套
结构:
while(条件)
{
循环体 // 当条件成立时执行
while(条件)
{
循环体 // 当条件成立时执行
while(条件)
{
循环体 // 当条件成立时执行
.........
}
}
}
执行顺序:由外循环向内循环顺序执行
4.2do...while...的多重嵌套
结构:
do
{
循环体
do
{
循环体
........
}while(条件)
}
while(条件)
执行顺序:由外循环向内循环顺序执行
4.3for循环的多重嵌套
结构:
for(表达式1;表达式2;表达式3)
{
循环体
for(表达式1;表达式2;表达式3)
{
循环体
........
}
}
执行顺序:由外循环向内循环顺序执行
只需要按照单个循环结构的执行顺序正常执行即可,多重循环嵌套只是一个循环接着一个循环的算而已
注:能够按照顺序执行的前提是循环体内没有出现break; continue; goto;等语句