2014-07-16 160 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"); 
     } 
}