• 締切済み

C言語についての質問です

プログラミングについての質問ですが、 printfで画面上に * *** ***** ******* というようにツリー状にアスタリスクを並べていくプログラムを作成したいのですが、 やりかたが良く分かりません。 使用できるヘッダーは<stdio.h>のみで、 printf( %s, ???)という構文を4回読みだす方法で、配列を利用するとの事なのですが、 分かる方がいらっしゃいましたらよろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

条件を小出しにされてもねぇ.... #include <stdio.h> int main(int argc, char *argv[]) { for (int i = 0; i < 4; ++i) printf("%s", i ? "" : "___*\n__***\n_*****\n*******\n"); return 0; }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

はい. #include <stdio.h> int main(int argc, char *argv[]) { for (int i = 0; i < 4; ++i) printf("%*.*s\n", i+4, 2*i+1, "*******"); printf("%s", ""); return 0; }

pazdra
質問者

補足

回答ありがとうございます! 問題に指定があり、 printfの構文が printf("%s", <>); の一つのみで、%sも固定されているので分からなくなってしまいました。 説明不足で申し訳ありません。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

"*******" は配列ですけど>#2. 意味不明な「printf( %s, ???)という構文を4回読みだす」を無視して, これでいいのか: #include <stdio.h> int main() { for (int i = 0; i < 4; ++i) printf("%*.*s\n", i+4, 2*i+1, "*******"); return 0; }

pazdra
質問者

補足

説明不足で申し訳ありません。 #include <stdio.h> int main(int argc, char *argv[]) { <> printf("%s", <>); <> } の<>の中を作成して完成させるという問題です。 宜しくお願い致します。

回答No.2

printf( %s, ???) を4回ということは printf( %s, "___*___"); printf( %s, "__***__"); printf( %s, "_*****_"); printf( %s, "*******"); ということかな? あとは、"___*___","__***__","_*****_","*******"の代わりに文字配列を使用すれば良いんじゃないの? スペースの代わりに“_”を入れてます。

pazdra
質問者

補足

ご指摘いただいた方法でのプログラムはできたのですけど、 それを文字配列を利用して考えるという意味がなかなか理解できませんでした。 宜しくお願い致します。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

確認だけど, 左端は全部まっすぐに並んでいればいい?

pazdra
質問者

補足

すいません!左詰めで表示されてしまっているのですが 実際は中央寄せで二等辺三角形の形になります! 宜しくお願いします!

関連するQ&A

専門家に質問してみよう