課題 1.1の変形1   N個の入力の最大値

<問題>

N個の整数を入力し、一番大きい整数を出力しなさい。

<実行結果>
入力数はいくつですか: 3
1番目の整数を入力してください: 2
2番目の整数を入力してください: 27
3番目の整数を入力してください: 5
一番大きい数は 27です。

<コメント>




解答例

#define _CRT_SECURE_NO_WARNINGS /* Visual Studio でscanfに関する警告オフ設定 */

#include <stdio.h>
#include <limits.h>

int main(void) {
    int i, j, m, n;  /* iは入力される整数、jは現在の個数、mは暫定最大値、nは入力数 */

    printf("入力数はいくつですか: ");
    scanf("%d", &n); /* Visual Studioではscanf_sに変えると警告が出ない */
    /* nに0以下が入力された場合の例外処理は書いていません */

    j = 0;
    printf("1番目の整数を入力してください: ");
        scanf("%d", &m);

    for (j = 1; j < n; j++) {
        printf("%d番目の整数を入力してください: ", j + 1);
        scanf("%d", &i);
        if (i > m)
            m = i;
    }

    printf("最大値は%dです\n",m);

    return 0;
}

/*
フィンランドのサエニエミによるプログラミングの学習に関する研究 Sajaniemi. J (2005)は、
プログラム中の変数の使い方(役割)に注目して、プログラムを読もう/作ろうと主張しています。

11の役割のうち、以下では、(1) fixed value, (2) stepper,  (3) most recent holder, (4) most wanted holder
の4つに注目します。それぞれ、仮の訳語を付けました。皆さんのアイディアをお待ちします。 2023.9
*/

#define _CRT_SECURE_NO_WARNINGS  /* Visual Studioでscanfの警告オフ */

#include <stdio.h>
#include <limits.h>

int main(void) {
    int i, j, m, n;  /* iは入力される整数、jは現在の個数、mは暫定最大値、nは入力数 */

    printf("入力数はいくつですか: ");
    scanf("%d", &n);  /* nは、一度入力があると固定される。(固定値 fixed value) */

    j = 0;
    printf("1番目の整数を入力してください: ");
        scanf("%d", &m);

    /* jは、forループのカウンタ。規則的に変化する。(ステッパー変数 stepper) */
    for (j = 1; j < n; j++) {
        printf("%d番目の整数を入力してください: ", j + 1);
        scanf("%d", &i); /* iは直近の情報を保持する変数。入力に応じて更新。(直近値の変数 most recent holder) */
        if (i > m)       /* mは暫定候補の値。「今のところ最も適当な値」を保持する変数。(暫定候補の変数 most wanted holder) */
            m = i;
    }

    printf("最大値は%dです\n",m);

    return 0;
}