- 締切済み
C言語についての質問です
プログラミングについての質問ですが、 printfで画面上に * *** ***** ******* というようにツリー状にアスタリスクを並べていくプログラムを作成したいのですが、 やりかたが良く分かりません。 使用できるヘッダーは<stdio.h>のみで、 printf( %s, ???)という構文を4回読みだす方法で、配列を利用するとの事なのですが、 分かる方がいらっしゃいましたらよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
条件を小出しにされてもねぇ.... #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)
はい. #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; }
- Tacosan
- ベストアンサー率23% (3656/15482)
"*******" は配列ですけど>#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; }
補足
説明不足で申し訳ありません。 #include <stdio.h> int main(int argc, char *argv[]) { <> printf("%s", <>); <> } の<>の中を作成して完成させるという問題です。 宜しくお願い致します。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
printf( %s, ???) を4回ということは printf( %s, "___*___"); printf( %s, "__***__"); printf( %s, "_*****_"); printf( %s, "*******"); ということかな? あとは、"___*___","__***__","_*****_","*******"の代わりに文字配列を使用すれば良いんじゃないの? スペースの代わりに“_”を入れてます。
補足
ご指摘いただいた方法でのプログラムはできたのですけど、 それを文字配列を利用して考えるという意味がなかなか理解できませんでした。 宜しくお願い致します。
- Tacosan
- ベストアンサー率23% (3656/15482)
確認だけど, 左端は全部まっすぐに並んでいればいい?
補足
すいません!左詰めで表示されてしまっているのですが 実際は中央寄せで二等辺三角形の形になります! 宜しくお願いします!
補足
回答ありがとうございます! 問題に指定があり、 printfの構文が printf("%s", <>); の一つのみで、%sも固定されているので分からなくなってしまいました。 説明不足で申し訳ありません。