C言語-科目ごとに得点を入力するとそれに応じた成績を返すプログラム
科目ごとの得点を入力すると、それに応じて「A〜D」およびマイナスの成績を返すプログラム。
今回は自作のrank関数をつくり、それによって成績を出力するようにしたい。ただし、rank関数自体は以下のように定めよう。
- rank関数をプロトタイプ宣言する
- rank関数は成績だけを返すようにする
また、成績は以下のような区分にした。
得点範囲 | 成績 |
---|---|
0未満 | - |
0以上50点未満 | E |
50以上60未満 | D |
60以上70未満 | C |
70以上80未満 | B |
80以上 | A |
コード
//成績を入力するとランクを出す関数 #include <stdio.h> //プロトタイプ宣言 int rank(int seiseki); //main関数 int main(void) { int eng,math,sci; // 科目ごとの得点 配列でも可 printf("英語,数学,物理の得点をカンマ区切りで入力してください\n"); scanf("%d,%d,%d",&eng,&math,&sci); //科目ごとの得点からそれに応じたランクを出力する printf("英語の得点は%d、成績は%cです\n",eng,rank(eng)); printf("数学の得点は%d、成績は%cです\n",math,rank(math)); printf("物理の得点は%d、成績は%cです\n",sci,rank(sci)); return 0; } // 得点からそれに応じたランキングを返すrank関数 int rank(int seiseki) { //引数を受け取る char hyoka; //char型 if(seiseki < 0) //0未満 hyoka = '-'; else if(seiseki < 50) hyoka = 'E'; else if(seiseki < 60) ///50以上60点未満 hyoka = 'D'; else if(seiseki < 70) //60以上70未満 hyoka = 'C'; else if(seiseki < 80) //70以上80未満 hyoka = 'B'; else if(80 <= seiseki) //80以上 hyoka = 'A'; else ; return hyoka; //受け取った引数からランキングを返す }
rank関数自体には出力するものはなく、あくまでもmain関数によって出力されている。これによって関数の再利用がしやすくなる。たとえば、別の場所でこのランキングを使って判定したい時に、このrank関数を活用できる。
こんな感じになる
$gcc seiseki-rank.c -o seiseki-rank $ ./seiseki-rank 英語,数学,物理の得点をカンマ区切りで入力してください 50,-2,89 英語の得点は50、成績はDです 数学の得点は-2、成績は-です 物理の得点は89、成績はAです