課題 [9] 関数②(9/9)

問 9(提出プログラム名:ex0909.c)

まず,このプログラム(ex0909.c)をダウンロード(右クリックして保存)しなさい.
そして,次の①と②を行いなさい.
①このプログラムにはインデントが全く付けられておらず,不適切な書き方になっている.
 VSCode の自動インデント(フォーマット)機能を使ってインデントを適切に修正しなさい.
②このプログラムでは SIZE 個の整数(ただし,値はすべて異なる)を読み込み,
 それらを配列に格納した後,その中の2番目に大きな値を見つけて表示するように
 作ったつもりでしたがうまくいきませんでした(SIZE はマクロで定義されている).
 誤りを見つけて修正し,提出しなさい.
 誤りは複数箇所にありますすべて print_2ndあります.

【補足情報】
例年,ごく一部ですが題意を誤解する(混乱している?)人がいるので念の為に補足しておきます.

print_2nd は,あくまでも与えられた配列内の整数の中で
2 番目に大きな値を printf で表示するのが目的であり,
何か値を返す(return する)ものではありません
まれに,
  void print_2nd(...

  int print_2nd(...
と書き換えて何らかの整数を return で返そうとする人がいますが,それはおかしいです.

【注意】
本課題の趣旨は,与えられたプログラム内の誤りを見つけて修正することなので,(インデントの修正は別として)内容を過度に書き換えるのは誤りと見なします(ごく一部のみを修正すればうまく動くプログラムになっています).
まれにゼロから作り直したりget_rank を一切使用しないプログラムに書き換えたりする人がいますが,すべて誤り扱いとなります.

<禁止事項>
● 変数を追加してはいけません.
● 変数の名前を変えてはいけません.
● 全体の行数を大きく変えてはいけません.(変更が必要でも,行数の増減は数行以下にとどめよ)

  • 【目標としていたプログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:1 2 3 4 5
4 が第 2 位です

  • 【目標としていたプログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:10 12 3 4 5
10 が第 2 位です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


問 4 ~問 9 は 6/15(月)23:50 までに提出を済ませなさい.
(ex0904.c, ex0905.h ~ ex0908.h, ex0909.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.