2013-01-23 70 views
2

我試圖創建在C金字塔,我需要得到下一模式:爲什麼遞減在C編程中無法正常工作?

A 
    ABA 
    ABCBA 
ABCDCDA 
ABCDEDCBA 

我需要嵌套的for循環使用,但減量不適合我正常工作,這是我的代碼:

int main(void) 

{ 

    int i, j, k, g; 
    char userLatter; 
    printf("please enter an uppercase letter:\n"); 
    scanf("%c", &userLatter); 
    int asci = userLatter; 

    for (i = 0; i < 5; i++) 
    { 

     for (j = 4; j > i; j--) 
     { 
      printf(" "); 
     } 

     asci = userLatter; 
     for (k = 0; k <= i ; k++) 
     { 
     printf("%c", asci++); 
     } 


     for (g = 1; g <= i; g++) 
     { 
      printf("%c", --asci); 
     } 

     printf("\n"); 
    } 

} 

這是輸入的 「a」

和輸出即時得到是:

a 
    abb 
    abccb 
abcddcb 
abcdeedcb 

你能告訴我我做錯了什麼嗎?

TNX

+5

瞭解如何使用調試器。這將證明現在和將來都是一種方便的技巧。 –

+1

它不起作用?你不能只轉儲一些代碼,並期望人們爲你解決它。顯示你的結果或你得到的錯誤信息。 – DrummerB

+1

什麼減少不正常?你期望發生什麼?你給了什麼投入。發生了什麼? – slugonamission

回答

7

添加:

--asci; 

兩個for環路之間。

在第一個循環中,asci++執行後綴遞增:將表達式求值爲asci,然後對象遞減。

+0

謝謝allot @ouah – MNY

+0

@ user1959174不客氣! – ouah

2

Cosider是

printf("%c", --asci);//decreases the value and then prints 

不同於

printf("%c", asci--);//prints and then decreases the value 
+0

不,這不是:( – dasblinkenlight

+0

@dasblinkenlight雖然這可能沒有給出準確的解決方法,但誤解了'printf(「%c」,asci - )'行(或類似地,'printf(「%c 「,asci ++)')絕對是它。 – femtoRgon

相關問題