• 締切済み

C言語、この場合の記述の仕方

次の問題をどのように記述すればいいのかわかりません。 ・任意の整数を3つ入力して、その中から最大値だけを出力するプログラムを書け。 ex) 3 6 9 と入力した場合 最大値9 問題文からして if を使うのだと思うのですが、 いまいち想像ができません。 #include <stdio.h> int main() { ここから下の書き方がわかりません。 3つの整数を出力しろっていうことだから int a,b,c; のように最初に3つ記述すればいいのでしょうか? また、「最大値のみ表示する」という風にするには どのように記述すればいいのでしょうか? 2つなら if、else でなんとかできるような気がするのですが3つとなると・・・ 全然イメージが沸いてきません・・・。

みんなの回答

  • ikdx
  • ベストアンサー率0% (0/2)
回答No.5

※scanf等で,3つの整数が順次入力される場合 まず変数xを用意します。0で初期化します。 次に変数yを用意します。0で初期化します。 scanf等で値が入力されたら,値をxに代入します。 xとyを比較します。 xの方が大きければ,その値をyに入れます。 scanf等で値が入力されたら,値をxに代入します。 xとyを比較します。 xの方が大きければ,その値をyに入れます。 xとyを比較します。 xの方が大きければ,その値をyに入れます。 最後にyの値を表示します。 forとifを組み合わせればできます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

int a,b,c ; というようにしないで、 int a[3]; のように配列にして入力すれば、 a[0]を仮の最大値にして あとは、配列を頭から順に仮の最大値と比べる(2つを比較すればいい) ですね。 がんばって(^^)/

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

int a,b,c;として a=3; b=6; c=9; があるとします。 ここで、最大のものを入れる変数:xを用意します。 つまり int x; とします。 比較は一度に3つはできません。2つづつ比較します。 aとbを比較して大きい方をxにいれます。 if (a>b){ x=a; }else{ x=b; } ですね。 つぎにxとcを比較してcがxより大きいならxにcをいれます。 これでxにもっとも大きい数値がはいります。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

2つなら何とかできるのですね。 それでは、2つの場合をまず書いてみてください。 次に、入力を2つから3つに変更してください。変える部分は入力だけです。2つが入力できるなら3つ入力するようにするのもできますよね。 まずはここからです。(と言っても、待ってれば誰か正解を丸ごと書いてしまうと思いますが。)

  • cascade
  • ベストアンサー率24% (35/144)
回答No.1

宿題っぽい臭いがするんで、コードそのものは書きません。 この3つを変数を順に比較すればいいだけです。 …と書くと「?」となるかもですが、ホントにそのままです。 お察しの通り、3つの整数を代入する変数を用意します。(例:int a, b, c;) また、最大値を代入する変数を用意しておいたほうが 記述としてはスマートになると思います。(例:int max;) まず、a、b、cに値を代入しなければいけませんが、 それは質問にないので省略します。 代入された3つの変数のうち、aとbを比較し 大きいほうの変数をmaxに代入します。 その次はmaxとcを比較して、cがmaxより大きければmaxにcを代入します。 ここまででmaxにはa,b,cの中の最大値が入ったことになります。 最後にmaxを出力します。 あとは上をコード化するだけです。

関連するQ&A

  • C言語プログラム

    2つの整数を入力させ、それらが等しい場合hitoshii、異なる場合にはhitoshikunaiと出力するプログラムを作りたいのですが、うまくいきません。間違っているところを教えてください。 #include<stdio.h> #include<conio.h> void main() { printf("整数を入力してください:"); int number1; scanf("%d",number1); printf("整数を入力してください:"); int number2; scanf("%d",number2); if(number1==number2) { printf("hitoshii"); } else { printf("hitoshikunai"); } getch(); }

  • C言語 if文について

    #include <stdio.h> int main(void) { int a; printf("整数を入力してください:"); scanf("%d",&a); if(a % 10 == 5) puts("最下位の桁は5です。"); else puts("最下位の桁は5でありません。"); return 0; これでどうして読み込んだ整数値の最も下の桁が5であるかどうかを判断しているのでしょう? ifの式がいまいち理解できません。 解説できる方いませんか?

  • C言語の問題

    以下はC言語の問題です。お教えください。 1000以下の素数を求めるプログラム prog.c を作成せよ。各素数を整数4桁で出力し、15個の素数を出力した時点で改行処理 を行うこと。作成したプログラムを提出せよ。 です。 僕の考えでは、 #include <stdio.h> #include <math.h> main(){ int i; int j; int ix; int k; printf("正の整数を入力して下さい: "); scanf("%d",&i); ix=(int)(sqrt((double)i)); k=0; for(j=2;j<=ix;j++) { if(i%j==0) { k=1; } } if(k==0) { printf("%d は素数です\n",i); } else { printf("%d は素数ではありません\n",i); } となると思うのですが。どうやら違うようです。全然わからないので、正しい答えを教えてください。

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

  • C言語で困っています。

    正の整数を入れたときに、階乗を求めるプログラムを作りたいのですが、 ↓のプログラムを起動させたら、最終的な答えが1(kaizyo=1)になって、非常に困っています。 何故なのでしょうか?それと、どこを直せばいいですか? #include<stdio.h> main() { int x; int kaizyo=1; printf("整数を入力して下さい:"); scanf("%d",&x); if(x<=0) { printf("値が不適当です。"); } else { while(x<1) { kaizyo=kaizyo*x; x=x-1; } printf("%dの階乗は%dです。",x,kaizyo); } }

  • C言語 関数の問題

    C言語(関数の問題)で読み込んだ4つの整数の最大値を求めプログラムで 整数を2つペア比較し、関数の入れ子を用いて最大値を見つけて、表示する。 というプログラムを作成したいのですが #include<stdio.h> int maxof(int a, int b) { if(a > b) return (a); else return (b); } int max4(int a, int b, int c, int d) { max(max(a, b), max(c, d)); } int main(void) { int num1,num2, num3, num4; ------ 整数の読み込み printf("最大値は%dです。", max4(num1, num2, num3, num4)); return(0); } と記述すると、上手くいったのですが これを max関数だけを用いて作成できますでしょうか? 整数の比較は全てmax関数で行いたいです。

  • C言語

    0から29までの整数を順に出力する。ただし,出力する数が7の倍数の場合には,その数から7引いた値を出力せよ。 という問題で7の倍数の場合7引くという条件の付け方がわかりません ちなみに29までの整数の出力するというところまではできました #include <stdio.h> int main(void) { int A, B = 29; for (A = 0; A <= B; A++) printf("%3d",A); putchar('\n'); return (0); } ここまでで7倍数の場合7引くという条件をどのようにつけたらいいのかわかりません。どなたか教えてくださいお願いします。

  • C言語

    forの直後で1+2+3+4+5+・・・・・・・と加算し続ける式がわからないので教えてください。 #include<stdio.h> int main(void) { char moji; int i,sum; printf("正の整数を1から順に加算します。n\"); printf("加算を開始してよろしいですか。(Y=実行。N=終了)\n"); moji=getchar(); if(moji==y) { for(i=2;sum>=1001;i++) { この部分がわかりません; printf("加算値は%dです。¥n",sum); } }else if(moji=='n'){ printf("終了します。\n"); }else{ printf("YまたはNを入力してください。\n"); } return 0; }

  • C言語の問題です。よろしくお願いいたします。

    C言語の問題です.。10個の整数を入力し配列に保存した後、入力された数字の中に5の倍数が含まれているかを調べ、 含まれていた時には「5の倍数が含まれています」含まれていない時に「5の倍数が含まれていません」と表示させるプログラムを作りなさい。 自分なりに考えて作ったのですが、以下の通りでよろしいのでしょうか? #include <stdio.h> main() { int i; double c[10]; for (i = 0; i < 10; i++) { printf("整数を10個入力してください.(%d つ目) : ", i+1); scanf("%lf", &c[i]); } if(c[i] % 5 == 0){ printf("5の倍数が含まれています\n"); } else{ printf("5の倍数が含まれていません\n"); } return 0; }

  • C言語の問題です

    整数xを入力し、xが正か負かゼロかを判定し、表示するプログラムを作成する問題です。 【ヒント】x > 0 が成立するときは正。 x < 0 が成立するときは負。正でも負でもないときはゼロ。 整数x => 2    整数x => -2    整数x => 0 2 は正です -2は負です 0はゼロです 上記の解答は下記の通りなのですが、下記以外の解答方法を教えてはいただけないでしょうか? プログラミングに詳しい方よろしくお願いいたします。 #include <stdio.h> main() { int x; printf("整数x=> "); scanf("%d",&x); if (x > 0) { printf ("%d は正です\n",x); } else if (x < 0) { printf ("%d は負です\n",x); } else { printf ("%d はゼロです\n",x); } return (0); }

専門家に質問してみよう