はじめに
どうも! みなため(@MinatameT)です。
この記事で紹介するプログラムは、次の記事のプログラムと関連があります。学習意欲の高い方は、確認してみてください。
問題文
4つの正の整数値をキーボードから入力させ、最大値を出力するプログラムを作成しましょう。
ただし、0や負の値が入力されたときは、再入力させるようにしてください。
この問題について解説します。
解答例
ソースコード
#include<stdio.h>
int main(void)
{
int n[4]; //4つの整数値(配列)
int max; //最大値
int e; //配列番号
max = 1; //最初の最大値を1とする。
for(e=0; e<4; e=e+1) //4回のループ
{
printf("正の整数値を入力してください。>");
scanf("%d",&n[e]); //n[e]の入力
if(n[e]<=0) //n[e]が0以下であれば
{
printf("再入力です。"); //再入力のお知らせ
e = e - 1; //ループを1回分やり直す。
}
else if(n[e]>max) //n[e]がmaxより大きければ
{
max = n[e]; //最大値を上書きする。
}
}
printf("最大値 = %d\n",max); //最大値を表示する。
return(0);
}
「//」より右はコメント文なので、入力しなくても構いません。
maxは最初にどのような値が入っているのかわからないので、ループ(for文)の前に1を代入しておきます。
そして、入力された値とmaxの値(1回めの比較では1。)を比較し、入力された値のほうが大きければmaxに上書きします。
これを繰り返すことで、ループ(for文)を抜けた後、maxに最大値を入れた状態で、maxの値を出力することができます。
※配列番号は0から始まることに注意してください。
それでは、実行結果の例を確認していきます。
実行結果
正の整数値を入力してください。>0
再入力です。正の整数値を入力してください。>7
正の整数値を入力してください。>5
正の整数値を入力してください。>1
正の整数値を入力してください。>-100
再入力です。正の整数値を入力してください。>3
最大値 = 7
0や-100が入力されると、次の行で再入力させていることがわかります。
この場合、n[0]には7、n[1]には5、n[2]には1、n[3]には3が入っていることになります。
課題の解説はここまでです。お疲れさまでした。