• ベストアンサー

printf、最大値の出し方

3つの整数を入力し、どれが最大値かを判別するプログラムを作りたいです。 #include<stdio.h> main() { int i, x, max; max = 0; i = 1; while(i <= 3) { printf("整数:"); scanf("%d",&x); if (x > max) { max = x; } i++; } printf("最も大きい整数は%d\n", max); } とすると 整数:と3回表示されますが、これを一つ目の整数:、二つ目の整数:3つ目の整数:と表示されるようなプログラムにするにはどうしたらよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

#1です。度肝を抜かせたようで良かったです。 漢字で出す場合には3つ書くという方法が良いかも知れないです。 ■Sample #include<stdio.h> main(void) { int x, max; max = 0; printf("一つ目の整数:"); scanf("%d", &max); printf("二つ目の整数:"); scanf("%d", &x); if ( x > max ) max = x; printf("三つ目の整数:"); scanf("%d", &x); if ( x > max ) max = x; printf("最も大きい整数は%d\n", max); } 一つ目をいきなりmaxに入れているのは、普通に考えて一つ目が最大値(暫定)になるからです。

ichigo2007
質問者

お礼

何度もありがとうございます。 丁寧に回答していただいて、とても感謝しています。 こんなにさらりとできてしまうなんて羨ましい限りです。 私ももっと勉強してうまく作れるようになりたいと思います。 ありがとうございました。

その他の回答 (4)

回答No.4

#1です。補足ありがとうございました。 直接printf()の中に文章入れてしまうと、それがそのまま出てしまいます。 これをどうするかというと、一番最初のアドバイスです。 printf("最も大きい整数は%d\n", max); これはmaxに入っている値を表示させています。という事はちょうどiで3回の制御を掛けているので、これと同じように「iに入っている値を表示させる」にすれば良かったのです。 printf("%dつ目の整数:", i); こういう風にしてみて下さい。どうですか? まぁさすがに漢字で「一つ目の整数」と出すのは難しいです。漢字で出すのはプログラムを大きく変える必要があります。

ichigo2007
質問者

お礼

ありがとうございます。 なるほど!!そういう方法がありますね。 しかし、課題として出されたものなのですが、課題の見本では一つ目の・・・と漢字になっています。 このプログラムじゃだめなんですね・・・ でもprintf("%dつ目の整数:", i);には度肝を抜かれました。 ありがとうございます。

noname#62235
noname#62235
回答No.3

一つ目の整数、二つ目の整数とは、「一番大きい整数」「二番目に大きい整数」という意味でしょうか? もしそうなら、今のプログラムは「一番大きい整数」しか算出できないロジックですから、これを「二番目に大きい整数」「三番目に大きい整数」も算出できるようなロジックに変更する必要がありますよね。 その上で、最後に別のループを作って表示を行うようにする必要があるわけで、今の構造からは大きく変更する必要があると思いますよ。 C言語なんだからsort関数をつかったら簡単にできますけど、反則なんでしょうかね?(^^;

ichigo2007
質問者

お礼

回答ありがとうございます。 1つ目の整数を入力してください、2つ目の整数を入力して下さい・・・という意味です。3つ整数を入力して、その中から一番大きい整数を表示させるプログラムです。

回答No.2

#1です。早速チャレンジして頂けたようで・・・。 9回聞かれてしまいますか?修正前は「整数:」と3回だけ聞かれるのに、修正したら9回聞かれるのですか?それは気になりますね。 私が直したパターンだとちゃんと出てきます。もし良かったら直したソースを貼り付けてもらえると助かります。 触る部分は先程アドバイスした「printf("整数:");」の部分だけなので、たくさん聞かれる事は無いと思います。 while(i <= 3)でも問題ないですよ。元はそれで3回聞かれていた訳なので、プログラム的には問題無いと思います。

ichigo2007
質問者

お礼

再度ありがとうございます。printf("整数:")だけですか・・・ それだと、9回は聞かれないのですが、同じ事を3回聞かれてしまいます。 例を示すと(適当な数を入力しています)、 今は 整数:5 整数:13 整数:8 最も大きい整数は13 となりますが、printf("整数:")のところをprintf("一つ目の整数:")とすると、当然ですが、 一つ目の整数:5 一つ目の整数:13 一つ目の整数:8 最も大きい整数は13 となりますよね? これを 一つ目の整数:5 二つ目の整数:13 三つ目の整数:8 最も大きい整数は13 としたいのです・・・

回答No.1

C言語ですね。これから必要になるので勉強ですか? 1つ目の整数: みたいに表示させるんですよね?いきなり答えを言ってしまっても「ああそうかぁ」で終わってしまうので、参考までに・・・ printf("整数:"); この部分を工夫すれば表示されそうですね。どういう風にするかと言えば、質問者様も実際にされているようですよ。 printf("最も大きい整数は%d\n", max); これは画面にmaxの値を表示させているのですよね?という事は同じようにiの値を画面に出すようにすれば良いんだ!と思いませんか? どうしても分からなければ、もう一度聞いても良いと思いますが、ヒントがあれば十分できそうです。チャレンジしてみてはいかがですか?

ichigo2007
質問者

お礼

早速回答いただきありがとうございます。 while(i <= 3) にしているので、3回出てきてしまうのです・・・ 整数:だけだと区別がないので、3回出てきてもいいのですが、 1つ目、2つ目、3つ目がそれぞれ3回出てきてしまって、合計9回聞かれるようになってしまうのです。 printfだけでなくプログラム自体を大きく変えなくてはならないのですか?xの値だけではなく、文字を3つ用意しなくてはならないのでしょうか?

関連するQ&A