3

次の結果で星を生成する練習をしていますが、失敗しました。

1.

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

2.

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

この場合の私のロジックでは、ループで幅アライメント制御を使用することで生成できると考えていますが、結果はそれが間違っていることを示しています...

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

コードで:

    int i,j;
    char ch='*';//created for using of alignment
    for(i=1;i<=5;i++)
    {
        for(j=5;j>=i;j--)
        {
            printf("%5c", ch);
        }
        printf("\n");
    }

私のロジックでは、整列方法 (%5c) を使用して生成できると想定しています。しかし、結果は私が期待したものと同じではありません。

以下に示すように、私はすでに星を生成することに成功しています:

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

コード付き:

    int i,j;
    for(i=1;i<=5;i++)
    {
        for(j=5;j>=i;j--)
        {
            printf("*");
        }
        printf("\n");
    }

パターン1とパターン2の作り方の考え方が間違っていませんか?それとも、間違ったコーディングで正しい考え方をしているのでしょうか?

4

3 に答える 3

2

整列するために、実際には長方形を描いているかもしれません。各行には、一連のアスタリスク (おそらく空、つまりゼロのアスタリスク) と一連のスペース (おそらく空、つまりスペースなし) を出力します。

これは、(condition) ? (value_if_true) : (value_if_false)コンストラクトの理想的なアプリケーションです。常に完全な長方形を描画し、パターンは条件によってのみ変更されます:「これはスペースですか、それともアスタリスクですか?」

int i, j;
for(i=1;i<=5;i++)
{
    for(j=1;j<=5;j++)
    {
        // This generates a full rectangle
        // printf("%c", '*');
        // This generates an empty rectangle ;-)
        // printf("%c", ' ');
        // This generates a triangle
        printf("%c", (i >= j) ? '*' : ' ');
    }
    printf("\n");
}

条件 (i >= j) または (i <= j) によって管理される、上から下に向けられた 2 つの三角形があります。三角形を水平方向に反転するには、増加するシーケンスを減少するシーケンス、つまり (j) の代わりに (6-j) に置き換えます。

   when j is       6-j is
       1              5
       2              4
      ...            ...
       5               1

そのため、テストは((6-j) <= i)です。

于 2012-10-02T06:19:25.353 に答える
0

Chiragは間違いではありませんが、これには3つのforループは必要ありません。2つだけです。

Chiragの提案を見てください:

三角形が、スペースで構成された1つの三角形と、星で構成された別の三角形で構成されていると仮定します。

ここで、各行を独立して、行番号に対して減少/増加する星(およびスペース)の数と見なします。

int i, j;
for (i = 0; i < 5; i++)
{
    printf("\n%*s", i, " "); // Print i spaces
    for (j = i; j < 5; j++)
    {
        printf("*");
    }
}

これはあなたに与えるでしょう

*****
 ****
  ***
   **
    *
于 2012-10-02T06:08:07.280 に答える
0

両方のパターンについて、以下の理論を試すことができます。

三角形は、スペースで構成される 1 つの三角形と、星で構成されるもう 1 つの三角形で構成されるとします。1 つの for ループで、他の 2 つの for ループを作成して、両方の三角形を制御できます。

私が提案した方法を試してみてください。うまくいかない場合は、お手伝いします...

于 2012-10-02T05:55:27.540 に答える