C言語による成績の評価です。
複数のデータセットから、各データセットの成績を出力するプログラムです。
・問題
あなたの課題は、あるクラスの数学の成績を付けるプログラムを作成することです。
プログラムは複数の学生のテストの点数を読み込みます。
テストの点数は、中間試験の点数 m、期末試験の点数 f、再試験の点数 r で構成されています。
中間試験と期末試験は 50 点満点(m, f ≤ 50)、再試験は 100 点満点 (r ≤ 100)です。
試験を受けていない場合は点数を -1 とします。
以下の手順で成績が付けられます:
中間試験、期末試験のいずれかを欠席した場合成績は F。
中間試験と期末試験の合計点数が 80 以上ならば成績は A 。
中間試験と期末試験の合計点数が 65 以上 80 未満ならば成績は B。
中間試験と期末試験の合計点数が 50 以上 65 未満ならば成績は C。
中間試験と期末試験の合計点数が 30 以上 50 未満ならば成績は D。 ただし、再試験の点数が 50 以上ならば成績は C。
中間試験と期末試験の合計点数が 30 未満ならば成績は F。
・入力される値
複数のデータセットが入力として与えられます。
各データセットでは、空白で区切られた m、f、r が 1 行に与えられます。
m、f、r がすべて -1 のとき入力の終わりとします。
データセットの数(生徒の数)は 50 を超えません。
・期待する出力
各データセットについて、成績(A、B、C、D、または F)を1行に出力して下さい。
僕が作成、提出したコードは、以下のとおりです。
/* ITP1_7_A : Grading http://judge.u-aizu.ac.jp/ C言語による成績の評価 https://neguse-atama.hatenablog.com */ #include<stdio.h> int main(void){ int m,f,r; while(1){ scanf("%d %d %d",&m,&f,&r); if(m==-1 && f==-1 && r==-1){ break; }else if(m==-1 ||f==-1){ printf("F\n"); }else if(m+f>=80){ printf("A\n"); }else if(m+f>=65 && m+f<80){ printf("B\n"); }else if(m+f>=50 && m+f<65){ printf("C\n"); }else if(m+f>=30 && m+f<50){ if(r>=50){ printf("C\n"); }else{ printf("D\n"); } }else if(m+f<30){ printf("F\n"); } } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/
ITP1_7_A : Grading