2014-07-16 157 views
-3

我在这里搜索'for'循环问题的代码。我检查了我的分号等,但仍然无法弄清楚为什么我的循环只循环一次。C'for'循环只循环一次

代码如下所示,谢谢。

#include <stdio.h> 
#include <cs50.h> 
int main(void) 
{ 
    printf("Enter Height: "); 
    int height = GetInt(); 
    int i; 
    int count = 1; 

    for(i=height; i>0; i--) 
     { 
     for(i=height-1;i>0;i--) 
      { 
       printf(" "); 
      }  
     for(i=count;i>0;i--) 
      { 
       printf("#"); 
      } 
     printf(" "); 
     for(i=count;i>0;i--) 
      { 
       printf("#"); 
      } 

      count++; 
      printf("\n"); 
     } 
} 
+1

在你的测试中什么是'GetInt'返回值? – ouah

+6

你在所有这些循环中使用'i',我认为这可能会导致它。 – kviiri

+2

对嵌套的控制变量使用不同的名称 – BLUEPIXY

回答

2

在内部循环中使用相同的迭代器,而在外部(主要)循环中使用相同的迭代器。

只需使用一个称为j的整数(当然早些时候声明它)并在内部使用它。

+0

感谢C的新手,不知道迭代器是否在for循环参数外部读取。 – user3842085

0

您在内循环中使用i。这是造成问题,因为内部循环将使它0。所以在第一次迭代条件之后,外层循环将停止循环。

在内循环中使用一个不同的变量来解决这个问题。 这样子:

#include <stdio.h> 
int main(void) 
{ 
    int height; 
    int i,j; 
    int count = 1; 
    printf("Enter Height: "); 
    scanf("%d",&height); 
    for(i=height; i>0; i--) 
     { 
     for(j=height-1;j>0;j--) 
      { 
       printf(" "); 
      }  
     for(j=count;j>0;j--) 
      { 
       printf("#"); 
      } 
     printf(" "); 
     for(j=count;j>0;j--) 
      { 
       printf("#"); 
      } 

      count++; 
      printf("\n"); 
     } 
}