while
基本语法及其执行流程
在C语言中,while是一种循环结构,用于重复执行一段代码块,直到给定的条件不再满足。while 循环的基本语法如下:
while (condition) {
// 循环体
// 这里的代码会重复执行,直到条件不再满足
}
在while循环中,condition是一个逻辑表达式,它决定了循环是否继续执行。如果 condition 的值一开始就是假,那么循环体中的代码将永远不会执行。
while循环的执行流程如下:
1. 计算并判断小括号里表达式condition的值。若值为真(非零),则进入循环体执行其中的代码。
2. 执行循环体内的代码。
3. 再次计算 `condition` 表达式的值。如果仍然为真,则再次执行循环体内的代码。这个过程会一直重复,直到 `condition` 表达式的值为假(零)。
4. 当 `condition` 的值为假时,循环结束,程序继续执行循环体之后的代码。
例:
#include <stdio.h>
int main() {
int i = 0;
while (i < 5) {
printf("i is %d\n", i);
i++;
}
return 0;
}
在这个例子中,while 循环会重复执行 printf 语句,直到 i 的值不再小于 5。在每次循环迭代时,i 的值会递增,直到达到 5,循环结束。
补充
如何在小括号里条件满足的情况下就跳出这个循环?
举例-示意版
要在 while
循环中的条件满足时跳出循环,可以使用 break
语句。break
语句可以立即终止当前的循环,使程序跳出循环体,然后继续执行循环之后的代码。例:
#include <stdio.h>
int main() {
int i = 0;
while (1) {
printf("i is %d\n", i);
i++;
if (i == 5) {
break; // 当 i 等于 5 时跳出循环
}
}
return 0;
}
在这个例子中,使用 while (1)
来创建一个无限循环,然后在循环体内判断 i
是否等于 5。当 i
等于 5 时,使用 break
语句跳出循环。这样,即使 while
循环的条件始终为真,当满足 if
语句中的条件时,也可以跳出循环。
举例-应用版
当你希望从用户输入的数据中找到特定值时,可以使用 `while` 循环来不断接受输入,并在找到目标值时跳出循环。如何使用 `while` 循环从用户输入的数字中找到特定的值?例:
#include <stdio.h>
int main() {
int target = 42; // 要查找的目标值
int input;
int found = 0; // 标志变量,表示是否找到目标值
printf("请输入一系列数字,以0结束输入:\n");
while (1) {
scanf("%d", &input);
if (input == 0) {
break; // 当输入为0时跳出循环
}
if (input == target) {
found = 1;
break; // 当找到目标值时跳出循环
}
}
if (found) {
printf("找到了目标值 %d\n", target);
} else {
printf("未找到目标值 %d\n", target);
}
return 0;
}
在这个例子中,while循环用于接受用户输入的数字,直到用户输入了0为止。在循环体内,程序会检查用户输入的数字是否等于目标值target。如果找到目标值,程序将设置 `found` 标志为1,并使用break语句跳出循环。最后,根据found的值输出相应的提示信息。
for
基本语法及其执行流程
在C语言中,for
循环是一种用于重复执行一段代码块的循环结构,通常用于遍历数组、执行特定次数的操作等场景。for
循环具有更加紧凑的语法形式,适用于在已知循环次数的情况下。
for
循环的基本语法如下:
for (initialization; condition; update) {
// 循环体
// 这里的代码会重复执行,直到条件不再满足
}
for
循环的执行流程是这样的:
- 执行
initialization
,通常是初始化循环变量的值。 - 计算
condition
表达式的值。如果这个值为真(非零),则进入循环体执行其中的代码。 - 执行循环体内的代码。
- 执行
update
,通常是对循环变量进行更新操作。 - 再次计算
condition
表达式的值。如果仍然为真,则再次执行循环体内的代码。这个过程会一直重复,直到condition
表达式的值为假(零)。 - 当
condition
的值为假时,循环结束,程序继续执行循环体之后的代码。
for
循环与 while
循环相比,更适用于已知循环次数的情况,因为循环的初始化、条件判断和更新都可以在一行中完成,使得代码更加简洁。例:
#include <stdio.h>
int main() {
int i;
for (i = 0; i < 5; i++) {
printf("i is %d\n", i);
}
return 0;
}
在这个例子中,for 循环会重复执行 printf 语句,直到 i 的值不再小于 5。在每次循环迭代时,i 的值会递增,直到达到 5,循环结束。
比较 for 循环和 while 循环
-
for 循环适用于:
- 循环次数已知,循环变量的初始化、条件判断和更新都可以在一行内完成。
- 迭代遍历数组或执行一定次数的操作等情况。
- 语法格式更加固定,更容易在一个循环结构中完成初始化、条件判断和更新操作。
-
while 循环适用于:
- 循环次数未知或不确定,循环的条件判断可能依赖于程序运行时的变量。
- 需要动态调整循环条件的情况。
- 更加灵活,可以在循环体内部手动控制循环条件。
举例
for 循环的实际应用
计算一个数组中所有元素的总和。由于数组的长度已知,可以使用 for 循环遍历数组,并累加每个元素的值。
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int sum = 0;
int i;
for (i = 0; i < 5; i++) {
sum += arr[i];
}
printf("数组的总和为:%d\n", sum);
return 0;
}
通过 for 循环遍历了数组 arr 中的所有元素,并将它们的值累加到变量 sum 中。
while 循环的实际应用
编写一个程序,要求用户输入一系列数字,直到用户输入了负数为止,然后计算这些数字的总和。由于循环次数取决于用户输入的内容,可以使用 while 循环来处理这种情况。示例代码:
#include <stdio.h>
int main() {
int num;
int sum = 0;
printf("请输入一系列数字,以负数结束输入:\n");
while (1) {
scanf("%d", &num);
if (num < 0) {
break;
}
sum += num;
}
printf("输入数字的总和为:%d\n", sum);
return 0;
}
使用 while 循环来不断接受用户输入的数字,直到用户输入了负数为止。循环体内部根据用户的输入进行累加操作,当用户输入了负数时,使用 break 语句跳出循环。