1. 程式人生 > >C++每日一題

C++每日一題

為一門課寫一個評分程式,評分原則如下:
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;
}