循环语句使我们可以多次执行一个语句或一组语句。
序号 | 循环类型和说明 |
---|---|
1 | while 循环 在给定条件为真时重复一个语句或一组语句。 |
2 | for循环 多次执行一系列语句,并简化管理循环变量的代码。 |
3 | do...while循环 它更像while语句,除了它在循环主体的末尾测试条件。 |
4 | 嵌套循环 可以在任何其他while,for或do..while循环内使用一个或多个循环。 |
语法:
while(condition) {
statement(s);
}
statement(s) 可以是单一语句或语句块。所述condition可以是任何表达,和真正的是任何非零值。条件为真时,循环将迭代。
当条件变为假时,程序控制转到循环后的语句。
在这里,需要注意的关键是while循环可能根本不执行。当测试条件并且结果为false时,将跳过循环主体,并执行while循环之后的第一条语句。
#include
int main () {
/* 声明一个局部变量 */
int a = 10;
/* while循环控制输出 */
while( a < 20 ) {
printf("value of a: %d\n", a);
a++;
}
return 0;
}
for循环是一个重复控制结构,这样就有效地编写一个循环,需要执行的特定次数。
语法:
for ( init; condition; increment ) {
statement(s);
}
这是“ for”循环中的控制流程-
所述init步骤首先被执行,并且只有一次。此步骤允许声明和初始化任何循环控制变量。只要出现分号,就不需要在此处声明。
接下来,condition。如果为true,则执行循环主体。如果为假,则不执行循环主体,并且控制流仅在“ for”循环之后跳转到下一条语句。
在“ for”循环的主体执行之后,控制流跳回到增量语句(increment)。该语句允许您更新任何循环控制变量。只要条件后出现分号,该语句就可以留空。
再次评估条件。如果为true,则循环执行,并且过程重复其本身(循环的主体,然后是递增步,然后再次是条件)。条件变为假之后,“ for”循环终止。
#include
int main () {
int a;
/* for循环控制输出*/
for( a = 10; a < 20; a = a + 1 ){
printf("value of a: %d\n", a);
}
return 0;
}
与for和while循环不同,for和while循环在循环的顶部测试循环条件,而 C编程中的do ... while循环在循环的底部检查其条件。它是保证循环主体执行至少一次。
语法:
do {
statement(s);
} while( condition );
条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为真,则控制流跳回去做,并且循环中的语句再次执行。重复此过程,直到给定条件变为假。
#include
int main () {
int a = 10;
/* do...while循环 */
do {
printf("value of a: %d\n", a);
a = a + 1;
}while( a < 20 );
return 0;
}
循环控制语句从其正常顺序更改执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。
序号 | 控制声明和说明 |
---|---|
1 | break 声明 终止循环或切换语句,并在循环或切换后立即将执行转移到该语句。 |
2 | continue 声明 使循环跳过其其余部分,并在重新进行迭代之前立即重新测试其状况。 |
3 | goto 声明 将控制权转移到带标签的语句。 |
C编程中的break语句具有以下两种用法-
当在循环内遇到break语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。
它可用于终止switch语句中的case。
如果使用嵌套循环,则break语句将停止执行最内部的循环,并开始执行该块之后的下一行代码。
C编程中的continue语句的工作原理与break语句类似。而不是强制终止,它会强制执行循环的下一次迭代,(不执行代码块,增量直接加一)从而跳过之间的任何代码。
对于for循环,continue语句使条件测试和循环的增量部分执行。对于while和do ... while循环,continue语句使程序控制权传递给条件测试。
goto C编程语句提供从“转到”的标记声明相同功能的无条件跳转。
注 – 在任何编程语言中都强烈建议不要使用goto语句,因为它会使跟踪程序的控制流变得困难,使程序难以理解和修改。可以重写任何使用goto的程序来避免它们。
语法:
goto label; .. . label: statement;
#includeint main () { /* local variable definition */ int a = 10; /* goto 控制循环 */ LOOP:do { if( a == 15) { /* skip the iteration */ a = a + 1; goto LOOP; } printf("value of a: %d\n", a); a++; }while( a < 20 ); return 0; }
输出:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19
如果条件永远不会为假,则循环将变成无限循环。传统上,for循环用于此目的。由于不需要形成“ for”循环的三个表达式,因此可以通过将条件表达式保留为空来进行无限循环。或者通过while(true){} 来实现无限循环.(再结合break来控制结束循环)
#includeint main () { for( ; ; ) { printf("This loop will run forever.\n"); } while(ture) { printf("This loop will run forever.\n"); } return 0; }