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です