読者です 読者をやめる 読者になる 読者になる
【スポンサーリンク】

【C言語解説】 C言語練習 R013 - 区分がある金額の計算

こちらのサイト

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

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

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

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

【問題】

区分と人数を入力する。区分が1(子供)のときは料金を800円、2(大人)のときは
1500円とし、それに人数を掛けて料金合計を求め表示する。

【コード】

#include<stdio.h>
main(){
    int kubun, ninzu, goukei;
    
    printf("区分(1:子供、2:大人)="); scanf("%d", &kubun);
    printf("人数="); scanf("%d", &ninzu);
    if(kubun == 1){
        goukei = ninzu*800;
    }else{
        goukei = ninzu*1500;
    }
    printf("料金合計=%d\n", goukei);
    return 0;
}

【考え方】

  • int型の「kubun」「ninzu」「goukei」を宣言する。
  • 「kubun」に区分の数の値を入力する。
  • if 関数で処理を分岐する。そして区分に沿った料金を「ninzu」に掛けて金額を算出する。
  • printf 関数で合計金額を標準出力する。

【個人的な考え】

前回の問題
www.marusagi.com
と似ているように基本的な「入力」と「出力」の処理を利用しています。
区分の数が3つ以上になってくれば、if 関数ではなく switch 関数を使った方が良いと思います。
例えば、区分1が800円、区分2が1500円、区分3が1800円、それ以外なら1000円料金という条件が追加された場合、

switch(kubun){
    case 1: goukei = ninzu*800;
            break;
    case 2: goukei = ninzu*1500;
            break;
    case 3: goukei = ninzu*1800;
            break;
    default: goukei = ninzu*1000;
}

このようにした方がスッキリしますし、記述量も削減できます。

【スポンサーリンク】