Cprogramming 简明教程
For Loop in C
包括 C 在内的多数编程语言都支持 for 关键字来构建循环。在 C 中,其他循环相关关键字是 while 和 do-while 。与其他两种类型不同, for 循环被称为 automatic loop ,通常是程序员的首选。
for loop 是一个入口控制循环,它一直执行语句直到给定的条件。所有元素(初始化、测试条件和增量)被组合在一起,在带 for 关键字的圆括号内形成了 for loop 。
Control Flow of a For Loop
以下是 “for” 循环执行时的情况:
init 步骤首先执行,只执行一次。此步骤允许你声明和初始化任何循环控制 variables 。可以不在这里放置语句,只要出现一个分号。
接下来,对条件进行评估。如果为真,则执行循环体。如果为假,则不执行循环体,并且控制跳到 “for” 循环之后的下一条语句。
在执行 “for” 循环体之后,控制流跳回增量语句。此语句允许你更新任何循环控制变量。该语句可以留空,只要条件后面出现一个分号。
现在重新评估条件。如果为真,则循环执行且进程重复自身(循环体,然后是增量步骤,然后再次是条件)。条件变为假后,“for” 循环终止。
Flowchart of for Loop
以下流程图表示 for 循环如何工作:
当开发人员事先知道需要执行多少次迭代时,他们更喜欢使用 for 循环。可以将其视为对增量和测试循环变量的 while 和 do-while 循环的一种简写。
for 循环可以用不同的变体应用。让我们了解 for 循环在不同情况下的工作原理。
Example: Basic for Loop
这是 for 循环的最基本形式。请注意,括号内的所有三个子句(在 for 关键字前面)都是可选的。
#include <stdio.h>
int main(){
int a;
// for loop execution
for(a = 1; a <= 5; a++){
printf("a: %d\n", a);
}
return 0;
}
运行代码并检查其输出:
a: 1
a: 2
a: 3
a: 4
a: 5
Initializing for Loop Counter Before Loop Statement
初始化步骤可以放在 for 循环标题上方。在这种情况下,必须通过放置一个分号使 init 部分留空。
Updating Loop Counter Inside for Loop Body
你还可以放置空语句来代替增量子句。但是,需要将增量语句放置在循环体中,否则它将成为 infinite loop 。
Using Test Condition Inside for Loop Body
你还可以省略括号中测试条件的第二个子句。在这种情况下,你需要使用 break statement 终止循环,否则循环会无限运行。
Traversing Arrays with for Loops
For loop 非常适用于一次遍历数组的一个元素。请注意,数组中的每个元素都有一个从 “0” 开始的增量索引。
Example
#include <stdio.h>
int main(){
int i;
int arr[] = {10, 20, 30, 40, 50};
// for loop execution
for(i = 0; i < 5; i++){
printf("a[%d]: %d\n", i, arr[i]);
}
return 0;
}
当你运行这段代码时,它将产生以下输出:
a[0]: 10
a[1]: 20
a[2]: 30
a[3]: 40
a[4]: 50
Example: Sum of Array Elements Using for Loop
下面的程序计算给定数组中所有整数的平均值。
#include <stdio.h>
int main(){
int i;
int arr[] = {10, 20, 30, 40, 50};
int sum = 0;
float avg;
// for loop execution
for(i=0; i<5; i++){
sum += arr[i];
}
avg = (float)sum / 5;
printf ("Average = %f", avg);
return 0;
}
运行代码并检查其输出:
Average = 30.000000
Example: Factorial Using for Loop
以下代码使用一个 for 循环计算一个数字的阶乘值。请注意,数字的阶乘是 1 和给定数字之间的所有整数的乘积。阶乘在数学上表示为以下公式:
x! = 1 * 2 * . . . * x
这是计算阶乘的代码:
#include <stdio.h>
int main(){
int i, x = 5;
int fact = 1;
// for loop execution
for(i=1; i<= x; i++){
fact *= i;
}
printf("%d != %d", x, fact);
return 0;
}
当你运行这段代码时,它将产生以下输出:
5! = 120
for 循环非常适用于已知重复次数的情况。然而,循环行为可以通过 for 循环主体内的 break 和 continue keywords 控制。在处理二级 arrays 时也经常使用嵌套 for 循环。