C++每日一題
阿新 • • 發佈:2019-01-04
為一門課寫一個評分程式,評分原則如下:
a.有兩次隨堂考,每次滿10分。
b.有一次期中考試和一次期末考試,每次滿100分。
c.期末考試成績佔總成績的50%,期中考試佔25%,兩次隨堂考總共佔25%(不要忘記對隨堂考的分數進行正規化。應在求平均之前將它們換算為一個百分數)。
90分和90分以上的成績都評為A,80分和80分以上的成績(但低於90分)都評為B,70分和70以上的成績(但低於80分)都評為C,60分和60分以上的成績(但低於70分)都評為D,所有低於60分的成績都評為F。
程式將讀取學生的分數,並輸出學生的記錄,這個記錄包括兩次隨堂考,一次期中考試和一次期末考試的成績,另外還有學生的平均分數(數值)以及最終的字母評分。請為學生記錄定義並使用一個結構。輸入/輸出用鍵盤/螢幕來完成。
first_test
second_test
end_of_term
a.有兩次隨堂考,每次滿10分。
b.有一次期中考試和一次期末考試,每次滿100分。
c.期末考試成績佔總成績的50%,期中考試佔25%,兩次隨堂考總共佔25%(不要忘記對隨堂考的分數進行正規化。應在求平均之前將它們換算為一個百分數)。
90分和90分以上的成績都評為A,80分和80分以上的成績(但低於90分)都評為B,70分和70以上的成績(但低於80分)都評為C,60分和60分以上的成績(但低於70分)都評為D,所有低於60分的成績都評為F。
程式將讀取學生的分數,並輸出學生的記錄,這個記錄包括兩次隨堂考,一次期中考試和一次期末考試的成績,另外還有學生的平均分數(數值)以及最終的字母評分。請為學生記錄定義並使用一個結構。輸入/輸出用鍵盤/螢幕來完成。
first_test
second_test
end_of_term
midsemester
題目來源於C++教材
答案是我自己編寫的,如有不對歡迎交流
#include<iostream> using namespace std; struct student { private: int first_test; int second_test; int midsemester; int end_of_term; char grade; public: void get_first_test(); void get_second_test(); void get_midsemester(); void get_end_of_term(); void end_grade(); }; int main() { student student1,student2; student1.get_first_test(); student1.get_second_test(); student1.get_midsemester(); student1.get_end_of_term(); student1.end_grade(); student2.get_first_test(); student2.get_second_test(); student2.get_midsemester(); student2.get_end_of_term(); student2.end_grade(); return 0; } void student::get_first_test() { int signal=1; cout<<"請輸入第一次成績:"; cin>>first_test; if((first_test>=0)&(first_test<=10)) { signal=0; } while(signal) { cout<<"輸入有誤,請輸入第一次成績:"; cin>>first_test; if((first_test>=0)&(first_test<=10)) { signal=0; } } } void student::get_second_test() { int signal=1; cout<<"請輸入第二次成績:"; cin>>second_test; if((second_test>=0)&(second_test<=10)) { signal=0; } while(signal) { cout<<"輸入有誤,請輸入第二次成績:"; cin>>second_test; if((second_test>=0)&(second_test<=10)) { signal=0; } } } void student::get_midsemester() { int signal=1; cout<<"請輸入期中成績:"; cin>>midsemester; if((midsemester>=0)&(midsemester<=100)) { signal=0; } while(signal) { cout<<"輸入有誤,請輸入期中成績:"; cin>>midsemester; if((midsemester>=0)&(midsemester<=100)) { signal=0; } } } void student::get_end_of_term() { int signal=1; cout<<"請輸入期末成績:"; cin>>end_of_term; if((end_of_term>=0)&(end_of_term<=100)) { signal=0; } while(signal) { cout<<"輸入有誤,請輸入期末成績:"; cin>>end_of_term; if((end_of_term>=0)&(end_of_term<=100)) { signal=0; } } } void student::end_grade() { double a=(double(first_test)*10+double(second_test)*10)*0.125+double(midsemester)*0.25+double(end_of_term)*0.5; if((a<=100)&(a>=90)) grade='A'; else if((a<90)&(a>=80)) grade='B'; else if((a<80)&(a>=70)) grade='C'; else if((a<70)&(a>=60)) grade='D'; else grade='E'; cout<<grade<<endl; }