CExercise_1_4continue关键字在while循环和for循环中,实现的功能有什么区别?
题目:
以上两段代码中都使用了continue关键字,一个使用while循环实现,一个使用for循环实现。
那么它们实现的功能有什么区别呢?为什么有这样的区别呢?
int count = 0;
int sum = 0;
int i;
while (count < 5) {
scanf("%d", &i);
if (i == 0) {
// 输入0就不必要累加了
continue;
}
sum += i;
count++;
}
printf("sum = %d\n", sum);
int sum = 0;
int i;
for (int count = 0; count < 5; count++) {
scanf("%d", &i);
if (i == 0) {
// 输入0就不必要累加了
continue;
}
sum += i;
}
printf("sum = %d\n", sum);
分析:
:这两段代码的主要目的都是通过用户输入累加五个非零整数,并输出这些数的总和。然而,它们在处理输入为0的情况时的行为有显著差异,这是由它们的循环结构和条件处理决定的:
第一段代码(使用 while 循环)
这段代码使用 while 循环,在变量 count 达到5之前持续循环,所以就一共循环五次,接受五次键盘输入。
如果用户输入的是 0,则通过 continue 语句跳过当前循环的剩余部分,不对 sum 进行累加,也不增加 count 的值。这意味着这个循环会一直执行,直到用户输入了五个非零的整数为止。
总之,第一段代码总会累加五个非零整数的输入求和。
第二段代码(使用 for 循环)
这段代码使用 for 循环,明确循环五次,每次循环 count 会自增。
如果输入的是 0,同样通过 continue 跳过当前循环的剩余部分,不累加 sum。但由于 count 是在 for 语句的控制下自动增加的,所以即便sum不累加但count还是会累加的。
总之,第二段代码只接受5次键盘录入,不管录入什么,非0还是0都可以,然后求和,在求和的过程中,如果输入的是0,不进行累加操作。
这两段代码的核心差异在于:
循环次数:while 版本将确保至少有五个非零输入被累加;for 版本总共执行五次输入,不管输入值是什么。
结束条件:while 循环是基于非零输入的数量,而 for 循环是严格的五次循环。