这两种代码有什么区别?我不知道,即使他们输出不同的值
What is the difference between these two types of code? I can't tell even though they output different values
我在一个网站 (https://www.learn-c.org/en/While_loops) 上解决了一个问题,该网站侧重于教授 C 语言的基础知识。当我应该解决这个问题时,我认为这很容易,而且我立刻想到了答案。然而,事实证明这是错误的。
这是我的方法。它给出了这个输出:7 5 9 5 6
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
i++;
if(array[i]<5||array[i]>10)
continue;
printf("%d\n", array[i]);
}
return 0;
}
这就是解决方案。给出了这个输出:7 5 9 5
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
if(array[i] < 5){
i++;
continue;
}
if(array[i] > 10){
break;
}
printf("%d\n", array[i]);
i++;
}
return 0;
}
我到处寻找我能想到的答案,但我似乎无法理解我的解决方案与提供的解决方案之间的区别。
提供的解决方案输出:7 5 9 5
我的解决方案输出:7 5 9 5 6
区别在于break
语句。
在您的代码中,循环一直执行直到满足 i < 10
条件(有效地遍历数字 1、7、4、5、9、3、5、11、6、3 并跳过最后一个)。
在此代码中,将打印前面提到的数字中 5 到 9 之间的数字。
在答案代码中,循环STOPS 当满足中断条件时,即达到数字11 时。如果继续下去,答案还是一样。
第一个区别:输入后将 i
增加一:第 8 行 (i++
)。
所以你从数组中的第二个值开始;这对输出没有影响,但差异很大。
其次 break
完全按照练习要求进行:如果值大于 10,则不应打印它 并且 停止循环。中断退出围绕它的循环,从而满足要求。 break 退出外循环并继续循环后的下一行 (return 0) 所以即使 while 循环中的条件是 (i<1000) 带有 break 的代码的输出也是相同的。
在提供的情况下,while 循环运行 8 次,因为 11 在循环中的索引 8 处,但通常 break 与循环执行的次数无关,它仅取决于需要的条件为真(if 语句)执行它。
第三:你被要求使用两个 if 语句,而你只使用一个检查两个条件的语句。
第四,您更改了提供的代码,该代码在 printf
之后包含一个 i++
,但您的代码中没有。
我在一个网站 (https://www.learn-c.org/en/While_loops) 上解决了一个问题,该网站侧重于教授 C 语言的基础知识。当我应该解决这个问题时,我认为这很容易,而且我立刻想到了答案。然而,事实证明这是错误的。
这是我的方法。它给出了这个输出:7 5 9 5 6
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
i++;
if(array[i]<5||array[i]>10)
continue;
printf("%d\n", array[i]);
}
return 0;
}
这就是解决方案。给出了这个输出:7 5 9 5
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
if(array[i] < 5){
i++;
continue;
}
if(array[i] > 10){
break;
}
printf("%d\n", array[i]);
i++;
}
return 0;
}
我到处寻找我能想到的答案,但我似乎无法理解我的解决方案与提供的解决方案之间的区别。
提供的解决方案输出:7 5 9 5
我的解决方案输出:7 5 9 5 6
区别在于break
语句。
在您的代码中,循环一直执行直到满足 i < 10
条件(有效地遍历数字 1、7、4、5、9、3、5、11、6、3 并跳过最后一个)。
在此代码中,将打印前面提到的数字中 5 到 9 之间的数字。
在答案代码中,循环STOPS 当满足中断条件时,即达到数字11 时。如果继续下去,答案还是一样。
第一个区别:输入后将 i
增加一:第 8 行 (i++
)。
所以你从数组中的第二个值开始;这对输出没有影响,但差异很大。
其次 break
完全按照练习要求进行:如果值大于 10,则不应打印它 并且 停止循环。中断退出围绕它的循环,从而满足要求。 break 退出外循环并继续循环后的下一行 (return 0) 所以即使 while 循环中的条件是 (i<1000) 带有 break 的代码的输出也是相同的。
在提供的情况下,while 循环运行 8 次,因为 11 在循环中的索引 8 处,但通常 break 与循环执行的次数无关,它仅取决于需要的条件为真(if 语句)执行它。
第三:你被要求使用两个 if 语句,而你只使用一个检查两个条件的语句。
第四,您更改了提供的代码,该代码在 printf
之后包含一个 i++
,但您的代码中没有。