2015-10-22 95 views
1

所以,我有一個簡單的C程序,它應該輸出數量遞減的空格,並且在我的新行中增加了一些哈希標記。下面是我用來嘗試此完成代碼:for循環中的值不隨增量而變化?

for(x = 0; x < n; x++) { 
    for(y = n - 1; y > 0; y--) { 
     printf(" "); 
    } 
    for(int z = 2; z < n + 2; z++) { 
     printf("#"); 
    } 

    printf("\n"); 
} 

我預計,基於代碼倒計時這樣,我應該看到這樣的輸出:

## 
    ### 

然而,當我我的代碼運行,我得到一個一致的輸出:

### 
    ### 

上我哪裏錯了,我對於造成這一問題的循環有什麼想法?

+3

你的內循環不應該做一些依賴'x'的東西嗎?否則,你爲什麼期望他們在每一行輸出不同的東西? – Barmar

回答

3

這裏:

n = 3; 
for(x = 0; x < n; x++) { 
    for(y = 0; y < n; y++) { 
     printf("%c", (y < (n - x - 1)) ? ' ' : '#'); 
    } 

    printf("\n"); 
} 

結果:

# 
## 
### 
1

下面做的最徹底的方法。 2路:

  • 一個從0的空間max MINUS row number
  • 一個是包括hashtag從0max MINUS number of space

代碼:

int main() { 
    int n =10; 
    int x, y, z; 
    for(x = 0; x < n; x++) { 
     for(y = 0; y < n - x - 1; ++y) { 
      printf(" "); 
     } 
     for(z = 0; z < n - y; ++z) { 
      printf("#"); 
     } 

     printf("\n"); 
    } 
    return 0; 
} 

你將得到的結果是:

  # 
     ## 
     ### 
     #### 
    ##### 
    ###### 
    ####### 
    ######## 
######### 
##########