while,for,do-while,break和continue语句,goto语句
循环结构:
根据条件进行多次执行相同的或相似的代码
在C语言中,有三种循环结构while
,for
和do-while
while
while语句的结构和if语句很相似
while(表达式)
语句;
执行流程
首先就行表达式判断,结果为0则结束循环,不为0则继续循环语句,直到下一次判断。
打印1~10
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
for
for循环是最常用的循环,语法如下:
for(表达式1; 表达式2; 表达式3)
语句;
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
执行流程
大体与while一致,不过多了个初始化,初始化只会执行一次,然后根据表达式判断是否执行流程,若执行则同时对变量进行调整。
打印1~10
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
while与for的对比
红黄蓝部分分别是初始化,判断和变量调整三个部分,我们可以明显看到,for循环的三个部分更加集中,则非常利于代码的调整,维护,所以形式上for循环更加占优。
do-while
除了for
和while
,还有do-while
循环,这种用的最少。
do
语句;
while(表达式)
执行流程
它和前面两种循环都不同,do-while
循环是先进行一次循环,再进行判断。所以 do-while
语句中循环体至少执行一次。
#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
int main()//break
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break; //i==5后,终止循环,跳出循环,继续往下运行
printf("%d ", i);
i = i + 1;
}
return 0;
} //1 2 3 4
int main()//continue
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue; //i==5后,不终止循环,只跳出本次循环,继续进行下一次循环
printf("%d ", i);
i = i + 1;
}
return 0;
} //1 2 3 4
continue
在while
循环中的作用就是跳过本次循环中continue后边的代码,继续进⾏下⼀次循环的判断。
可以看出,如果循环调整是在continue
之后,可能会造成死循环。
for中的break和continue
int main()//break
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;//与while循环中的break作用一样,都是终止并跳出循环.
printf("%d ", i);
}
return 0;
}//1 2 3 4
#include <stdio.h> //continue
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;//这里跳出循环后,直接进入循环调整部分,不会造成死循环
printf("%d ", i);
}
return 0;
}//1 2 3 4 6 7 8 9 10
所以for
循环中continue
的作用是跳过本次循环中 continue 后的代码,直接去到循环调整部分。
总的来说就是for的continue会直接进入循环调整,而while的continue不会,使用的时候要当心。
do while循环中的break和continue
do-while
语句中的 break
和 continue
的作用和 while
循环中的几乎⼀模⼀样,我就不多废话了。
#include <stdio.h>
int main() //break
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
}//1 2 3 4
#include <stdio.h>//continue
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}//1 2 3 4
goto语句
C语⾔提供了⼀种非常特别的语法,就是goto
语句和跳转标号,goto 语句可以实现在同⼀个函数内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
printf("银狼\n");
goto next;
printf("SILVER WOLF\n");
next:
printf("跳过了SLILVER WOLF\n");
return 0;
}
goto
语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是 goto 语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto 就非常的方便了。
for (...)
{
for (...)
{
for(...)
{
if (disaster)
goto error;
}
}
}
error:
...
}
for
循环想提前退出得使⽤ break
,一个 break 只能跳出⼀层 for 循环,如果3层循环嵌套
就得使用3个 break 才能跳出循环,所以在这种情况下我们使用 goto
语句就会非常方便。
——————————————————————————————————————————————
感谢观看,希望对你有所帮助~