【スポンサーリンク】

【C言語解説】 C言語練習 R024 - 点数を入力し、合計、平均、最高点数、最低点数を表示する

こちらのサイト

C言語練習
http://www.geocities.jp/kenji_y0328/crenshu/

の問題を実際に解いていったので、「解説」という形でまとめていこうかと思っています。
ちなみに、こちらのサイトでは解答もありますが、自分の解答を元に解説していきます。

※作者様からの削除依頼がありましたらすぐに削除しますのでご報告頂けると幸いです。

カテゴリの「C言語練習」でまとめています。

【問題】

点数が999になる迄、点数を入力し、合計、平均、最高点数、最低点数を表示する。

【コード】

#include<stdio.h>
main(){
    int kensu=0, goukei=0, cnt=1, tensu, heikin, max, min;
    
    printf("点数="); scanf("%d", &tensu);
    max = min = tensu;
    goukei += tensu;
    
    while(tensu != 999){
        printf("点数(999入力で終了)="); scanf("%d", &tensu);
        goukei += tensu;
        cnt++;
        if(tensu>max) max = tensu;
        if(tensu<min) min = tensu;
    }
    heikin = goukei/cnt;
    printf("合計=%d 平均=%d\n", goukei, heikin);
    printf("最高得点=%d 最低得点=%d", max, min);
    
    return 0;
}

【考え方】

  • int型の「kensu」「goukei」「cnt」「tensu」「heikin」「max」「min」を宣言する。「kensu」には0、「goukei」には0、「cnt」には1を代入する。
  • 標準出力で「点数=」と表示し、標準入力処理で「tensu」に入力する。
  • 入力された「tensu」を基準とするために「max」と「min」に代入する。
  • 「goukei」に「tensu」を加算する。
  • while文で『tensu が999になるまで』という条件で繰り返し処理を行う。
  • 繰り返し処理の中で

「tensu」を入力。
「goukei」に「tensu」を加算。
「cnt」インクリメント。
if文で「tensu」が「max」より大きいならその「tensu」の値を「max」に代入する。
if文で「tensu」が「min」より小さいならその「tensu」の値を「min」に代入する。

という処理を繰り返す

  • 「heikin」に「goukei」を「cnt」で割った値を求めて平均点を代入する。
  • あとは4つの値を表示するだけ!

【個人的な意見】

なぜ変数で「kensu(件数)」「goukei(合計)」のように日本語が有るのに「cnt(カウント)」のように英語が混ざっているのか謎ですね。。。
while分の中の2つのif文、「else」を使って出来ないの?なんていう人がいるかもしれませんが、ここではちゃんと条件を明示しておかないと、「else」とは「それ以外の場合」という意味なので、しなくて良い処理を実行してしまう可能性が出てくるので、ここでも(は)きちんと明示しています。

【スポンサーリンク】