2017-04-08 79 views
1
#include<stdio.h> 
#include<conio.h> 
main() 
{ 
    int i=1, j=1; 
    while(i++<=100) 
    { 
     while(j++<=200) 
     { 
      if(j==150) 
       break; 
      else 
       printf(“%d%d\n”, i, j); 
     } 

     } 
} 

在输出中,我看到外循环只是迭代2和3次,但没有更多。我认为外层循环应迭代100次,内层循环应在外层循环的每次迭代中迭代200次。这段代码的输出并不是我所期望的。问题在哪里?

但它没有发生。任何人都可以指导我吗?

我使用Dev C++并使用C语言课程。

+0

你不复位' j = 0'。一旦超过200,内部'while'循环将不会被输入,因此不会输出。 –

+0

将'printf'放入有问题的循环中,看看会发生什么(作为一般规则) – user3125367

回答

0
#include<stdio.h> 
#include<conio.h> 
main() 
{ 
    int i=1, j=1; 
    while(i++<=100) 
    { 
     while(j++<=200) 
     { 
      if(j==150) 
       break; 
      else 
       printf(“%d%d\n”, i, j); 
     } 
     //don't forget to reset your j counter on every iteration of the outer loop. 
     j=1; 
     } 
} 
0

您的代码中的问题是,您不会在内部while循环结束时重置j计数器。其结果是,编译器将无法进入while循环一次j超过200,因为它永远不会重置为1复位j 1你的内心,而循环结束后:

#include <stdio.h> 
#include <conio.h> 

int main(void) 
{ 
    int i = 1, j = 1; 
    while(i++ <= 100) 
    { 
     while(j++ <= 200) 
     { 
      if (j == 150) 
       break; 
      else 
       printf(“%d%d\n”, i, j); 
     } 

     // You need to reset j after your inner while loop finishes running. 
     j = 1; 
    } 
} 
+0

在外循环的下一次迭代中,应该在内循环中输入j,直到满足条件。不?什么东西阻止它进入内循环?当内循环在外循环的第三次迭代中达到201时,控制应当到达外循环,因为内循环条件在201处不满足。因此在外循环的下一次迭代中,即4,控制应该进入内循环因为它现在是1而不是201. –

+0

当循环从while条件退出而不是从break断开时,应该自动重置,在这种情况下,内部循环从while终止。那么当j已经复位时,什么是停止外循环进入内循环。 –

+0

@JavaidAkhtar它会迭代第一次,直到j达到150.然后在外循环的第二个增量处,它将变成151,所以while循环将继续运行到200.现在,在你的代码中,你不会重置'j'只要'j = 201',内循环就不会在外循环的任何增量处运行。计数器'j'不会自动重置。 –

相关问题