-1

私はこのひし形を描いて、真ん中の行の後にひし形の残りの部分が右に 3 スペース移動するようにしようとしています。このシフトを組み込むために、以下のコードを修正していただけませんか?

出力は次のようになります。

     *
    ***
   *****
  *******
      *****
       ***
        * 

(ただし、真ん中に最大15個の星があります)。
ありがとう!

define TOTAL_ROWS 15
int main() {
    int row, col, numstars=1;
    int half, rate=1;

    for (row=1; row<=TOTAL_ROWS; row++) {

        half=TOTAL_ROWS/2

        for (col=0; col<half+1-numstars; col++)
            printf(" ");

        for (col=1; col<=2*numstars-1; col++)
            printf("*");

        if (numstars==(half+1))
            rate = -rate;

        numstars+=rate;  
        printf("\n");

    }
    return 0;
}
4

3 に答える 3

5

行が半分より大きいかどうかを確認し、それらの3つのスペースを追加してください...

if(row>half+1)
    printf("    ");

フィドルを参照してください。

于 2013-02-19T21:53:28.223 に答える
1

残りの半分に切り替えると、フラグを設定し、その後 3 つのスペースを出力します。

int flag = 0;

    ....


  if (numstars==(half+1)) {
        rate = -rate;
        flag = 1;
    }

    numstars+=rate;

    printf("\n");
    if (flag) printf("   ");

}

于 2013-02-19T21:52:22.483 に答える
0

最初の内側で、変数が中心を過ぎている場合は、col変数を開始できます。-3

for (col=(row <= half+1 ? 0 : -3); col<half+1-numstars; col++)
    printf(" ");

簡単で十分だと思います。

于 2013-02-19T22:09:55.637 に答える