2017-03-23 20 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

メインのforループをコピーしてその状態を反転しましたが、それは '1'しか出力しませんでした。 @zipzit –

+0

あなたが試したコードを表示してください。 – zipzit

答えて

1

あなたはこのコードを使用することができますが、私はこれは単純に反転コピーメインfor(i=1;i<=n;i++)ループを作るの問題がどのようにこのコードの動作

#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ループは1からnになります。そのループをコピーしてn-1から1にする必要があります。なぜn-1で始めるべきか、またループの方向を逆にする方法を理解するための演習を行います。

不要なコードの重複を避けるには、forループ内のコードを別の関数で分離し、ループ内からコードを呼び出すことができます。