2017-03-23 73 views
-2

我有這個代碼,它向用戶詢問一個範圍並輸出一個數字三角形。例如,如果輸入4,代碼是這樣的:三角形的反轉[c]

1 
    121 
12321 
1234321 

問題是代碼的減少。我試圖扭轉代碼,但是結果並不好,因爲它輸出了1

代碼:

#include <stdio.h> 

main(){ 
    int i,j,k,l,n; 
    printf("enter the range="); 
    scanf("%d",&n); 
    for(i=1;i<=n;i++){ 
    for(j=1;j<=n-i;j++) { 
     printf(" "); 
    } 
    for(k=1;k<=i;k++){ 
     printf("%d",k); 
    } 
    for(l=i-1;l>=1;l--){ 
     printf("%d",l); 
    } 
    printf("\n"); 
    } 
} 

是否有任何功能或辦法讓我有一個這樣的輸出?

1 
    121 
12321 
1234321 
12321 
    121 
    1 
+0

看起來像一個家庭作業。你有什麼嘗試?事實上,這看起來很容易。 – zipzit

+0

我複製了我的main for循環並將其逆轉,但輸出只有'1'。 @zipzit –

+0

因此,顯示您嘗試的代碼。 – zipzit

回答

1

您可以使用此代碼,但我建議學習此代碼的工作

#include <stdio.h> 

int main(){ 
    int i,j,k,l,n,space; 
    printf("enter the range="); 
    scanf("%d",&n); 
    for(i=1;i<=n;i++){ 
    for(j=1;j<=n-i;j++) { 
     printf(" "); 
    } 
    for(k=1;k<=i;k++){ 
     printf("%d",k); 
    } 
    for(l=i-1;l>=1;l--){ 
     printf("%d",l); 
    } 
    printf("\n"); 
    } 

     for(i=n-1;i>=1;i--) 
     { 
    for(j=1;j<=n-i;j++) { 
     printf(" "); 
    } 
    for(k=1;k<=i;k++){ 
     printf("%d",k); 
    } 
     for(l=i-1;l>=1;l--){ 
     printf("%d",l); 
    } 
    printf("\n"); 
     } 
} 
0

如何,這是簡單地使反轉副本的主for(i=1;i<=n;i++)循環的問題。目前您的for循環從1到n。你應該複製這個循環,並使它從n-1變成1.我留給你理解爲什麼你應該從n-1開始,以及如何改變循環的方向。

爲了避免不必要的代碼重複,您可以將您的for循環中的代碼隔離到不同的函數中,並從循環中調用它。