• 締切済み

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

  • C言語で全角文字の扱いについて

    全角を配列に格納するには2バイトを使いますよね。そこで気になることがあるのですが、以下のプログラムで一文字目(私)を表示するには、どうしたらいいのですか?これは間違っています。 教えて下さい。 #include <stdio.h> main(){ char array[100]={"私の名前はXXXです"}; printf("%s",array[0]); }

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • C言語について

    #include <stdio.h> int main(void) { printf("123456\tABC DEFGHIJK\n"); printf("2006/4/14\n"); printf("programing\n"); } のprintfをすべてputsに書き換えてコンパイル・実行すると、 #include <stdio.h> int main(void) { puts("123456\tABC DEFGHIJK\n"); puts("2006/4/14\n"); puts("programing\n"); } になると思うんですけど、そのputsを用いて上のprintfを用いたプログラムと同じ出力を得るにはどのようなプログラムに変えればいいのでしょうか?

  • c言語のついて

    c言語で・・・ #include <stdio.h> main() {   printf("こんにちは!"); } というプログラム(適当に作りました)が動きません。 ドコを間違えていますか?

  • C言語のint型の配列が分かりません

    #include<stdio.h> int main(void) { int str[ ]={0,1,2} printf("%s\n", str); return 0; } というプログラムをC言語でつくってみましたが動きません.(012と表示されて欲しかったのですが) int str[ ]={1,2,3}の部分をchar str[ ]={'0','1','2'}とすれば動きます. そこで質問なのですが, printf("~%s~", (配列名));  はchar型の配列にしか適応できないのですか? ※追記 puts関数の定義は int puts (const char *str); であるそうなので char型の仮引数にはchar型のアドレスを渡さなければいけません. ではprintf関数の定義は一体どんなものなのですか?

  • C言語初心者です。

    C言語初心者です。 1^2-2^2+3^3-4^2…+99^2-100^2の値を求めるプログラムを作成したいのですが上手くいきません。 どこが足りないのですか? #include <stdio.h> int main(void) { printf("%d", 1^2 - 2^2 + 3^2 - 4^2 … + 99^2 - 100^2); return (0); } よろしくお願いします。

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • C言語でヘッダファイルを自作する

    C言語で#defineを用いてヘッダファイルを作成したのですが、 作成したコンパイルするときにヘッダファイルがオープンできません。 参考にしている資料があるのですが、そこに書かれているサンプルプログラムを 丸ごとコピーして作ったプログラムも同様にヘッダファイルがオープンできない というエラーが出るので、ヘッダファイルを定義する方法そのものが間違っていると 思うのですが、どこが間違っているのでしょうか? よろしければ正しい記述方法もお教えください。 #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H wa(int a, int b) { return a+b; } #endif #include "sample.h" int main(){ printf("%d\n",wa(40,70)); return 0; } ヘッダファイルの定義の方法は他にもあるとは思いますが、 今回は#defineを用いた方法でお願いします。

  • C言語のソースをC++言語に変換したい

    C言語で書かれていたソースをC++言語に変換したいのですが どのような点に気をつければよいでしょうか 現在、プログラムの主な構造は構造体とそれを扱う関数が実装されていて、 これらをクラスを使用して書き換えようと思います。 それ以外に気にしておくものはありますか。 例えば、ヘッダファイルで<stdio.h>をインクルードしているところがありますが、 これは<cstdio>に書き換えたほうがよいかもしれない、と言われたことはあります。 printfなどはprintfのまま使用しても大丈夫ですか。 std::printfに書き換えたり、iostreamを使用する方法に書き換えたほうがいいですか。 規格としてはどのようになっているのでしょうか。 (「過去との互換性のためにあるだけであり、非推奨」とかあったりしますか。)

  • C言語 プログラミング

    C言語、プログラミングの質問です。 構造体について、 プログラムを組んでみたのですが、上手く出力されません。実行時にはエラーはないのですが、出力時に上手くいきません。どなたかどこがおかしいかわかる方、教えていただけませんでしょうか? #include <stdio.h> struct user{ char *name; char *id; int books; }; int main (void) { struct user u; printf("氏名を入力して下さい。"); scanf("%s",u.name); printf("パスワードを入力してください。"); scanf("%s",u.id); printf("年齢を入力してください。"); scanf("%d",&u.age); printf("氏名 %s\n",u.name); printf("パスワード %s\n",u.id); printf("年齢 %d\n",u.age); return 0; } よろしくお願いします。

このQ&Aのポイント
  • iPhoneで書類をプリントする方法について解説します。
  • 用紙サイズがポストカードになってしまう場合の解決策について説明します。
  • キヤノン製品を使用してiPhoneからプリントする方法をご紹介します。
回答を見る