我使用的是嵌套的while循环,遇到了问题,因为内部循环只运行一次。 为了证明我已经制作了一些测试代码。
#include <stdio.h>
int main(){
int i = 0;
int j = 0;
while(i < 10){
printf("i:%d\n", i);
while(j < 10){
printf("j:%d\n", j);
j++;
}
i++;
}
}
返回:
i:0
j:0
j:1
j:2
j:3
j:4
j:5
j:6
j:7
j:8
j:9
i:1
i:2
i:3
i:4
i:5
i:6
i:7
i:8
i:9
任何人都可以解释为什么嵌套循环不执行10次?我该怎么做才能解决它?
答案 0 :(得分:10)
您永远不会将j
的值重置为0
,因此,在第一次运行后,您的内循环条件永远不会为真。之后在外部循环中分配j = 0;
应该修复它。
答案 1 :(得分:3)
因为在外循环的每次迭代中都没有重置它。如果你想让内循环运行十次,那么将j
变量的初始化放在外循环中,如下所示:
int i = 0;
while (i < 10) {
printf("i:%d\n", i);
int j = 0;
while (j < 10) {
printf("j:%d\n", j);
j++;
}
i++;
}
答案 2 :(得分:1)
内循环完成后,您需要将值j
重新设置为0
。
答案 3 :(得分:1)
j
初始化为0。
#include <stdio.h>
int main(){
int i = 0;
int j = 0;
while(i < 10){
printf("i:%d\n", i);
j = 0 ; // initialization
while(j < 10){
printf("j:%d\n", j);
j++;
}
i++;
}
}
答案 4 :(得分:1)
您需要将j重置为0.您的代码中不会执行此操作。在外部循环中使j等于0.
答案 5 :(得分:1)
你的内部循环只执行一次的原因是因为你在循环之外将j初始化为0然后再也不会重置它。在第一次运行之后,j的值为10.它将再次不会小于10。
更好的方法是使用for
循环:
for (int i = 0; i < 10; i++){
printf("i:%i\n", i);
for (int j = 0; j < 10; j++){
printf("j:%i\n", j);
}
}
它还使代码看起来更清晰。
答案 6 :(得分:0)
您永远不会将j的值重置为0,因此,在第一次运行后,您的内部循环条件永远不会为真。分配j = 0;之后在外循环中应该修复它。