2

新しい各行の先頭にスペースを追加したい。現在の出力は次のとおりです。

$****
 $***
  $**
   $*
    $
     Press any key to continue . . .

私が欲しいのは:

$****
 $***
  $**
   $*
    $
Press any key to continue . . .

forループを追加しました!「続行するには任意のキーを押してください...」というメッセージがタブ化されていることを除けば、ほぼ完璧に見えます。これはどのように修正できますか?

コード:

for(r=1; r<=5; r++) {
  printf("$");
  for(c=1; c<=5;c++) {
    if(6-r<=c) {
      printf(" ");
    } else {
      printf("*");
    }
  }
  printf("\n");
  n++;
  for (f=0;n>f;f++)
    {
        printf(" ");
    }
}
4

4 に答える 4

2

次のように書くときに、変数の左パディングのトリックを使用できます$

printf("%*s", r, "$");

*文字列形式フィールドの を使用すると、パディング幅を指定できます。

于 2012-10-24T01:58:57.793 に答える
1

現在、あなたn++;は何もしません。n回までprint(" ")は、forループのようなものを使用する必要があります。これを行う1つの方法:スペースの量を印刷してから、必要な星の数を印刷します。これは4-nである必要があります。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int r;
    int c;
    int n = 0;
    for(r=1; r<=5; r++)
    {
        for (int i = 1; i<=n; i++) { //Print " " n number of times.
            printf(" ");
        }
        printf("$"); //Print dollar sign.
        for(c=0; c<(4-n);c++) //Print * 4-n times.
        {
            printf("*");
        }
        printf("\n");
        n++;

    }
}
于 2012-10-24T02:02:40.467 に答える
1

最も単純な形式: スペース、'$'、アスタリスクの順に出力します。

int r, c;
for(r=0; r<5; r++) {
  for(c=0; c<r; c++){
    printf(" ");
  }
  printf("$");
  for(c=r+1; c<5;c++) {
      printf("*");
  }
  printf("\n");
  n++;//What is this here for?
}

printf の優れたトリックを使用して、これを切り詰めることができます (既に他の誰かによって提出されているため、ここでは説明しません。

int r, c;
for(r=0; r<5; r++) {
  printf("%*s", r+1, "$");
  for(c=r+1; c<5;c++) {
      printf("*");
  }
  printf("\n");
  n++;//What is this here for?
}

しかし、待ってください。ピリオド ( .) を使用すると、文字列を強制的に切り捨てることができます。

int r;
for(r=1; r<6; r++) {
  printf("%*s%.*s\n", r, "$", 5-r, "*****");
}

バム!すべてを1つのステートメントにまとめました!

于 2012-10-24T01:58:20.807 に答える
1

「printf(" "); 'n' 回と言う方法」という質問自体に答えがありましたが、printf を 'n' 回と言う最も簡単な方法は、あなたが'*' (6-r) 回印刷するプログラム!

ここに、必要な出力を得るのに役立つ非常に単純なコードがあります

#include<stdio.h>
void main()
{
    int r,c,n=0;

    for(r=1; r<=5; r++)
    {
        for(c=n;c>0;c--)
        {
            printf(" ");

        }
        printf("$");
        for(c=1; c<=5;c++)
        {
            if((6-r)<=c)
            {
                printf(" ");
            }
            else
            {
                printf("*");
            }
        }

        printf("\n");
        n++;

    }
}

コードを確認したい場合は、Codepad.org にアクセスしてコードを実行し、出力を確認してください。

于 2012-10-24T02:10:55.330 に答える