题目描述
为一门课写一个评分程序,评分原则如下:
(1)有两次随堂考试,每次满分50分;
(2)有一次期中考试和一次期末考试,每次满分100分;
(3)期末考试占总评成绩的50%,期中考试占总评成绩的25%,两次随堂考试总共占25%;
(4)总评成绩90-100分为A,80-89分为B,70-79分为C,60~69分为D,低于60分为E;
设计一个Score类,数据成员如下:
string name;//记录学生姓名
double s[4];//存储4次成绩,s[0]和s[1]存储2次随堂考试,s[2]存储期中考试,s[3]存储期末考试
double total;//记录总评成绩
char grade; //记录对应的等级
学生信息由键盘录入,默认总评成绩的等级为B,其他数据项无默认值。计算总评成绩并给出等级,输出某个同学的全部信息。
主函数如下:
int main()
{
Score *s1=new Score;
s1->Input();
s1->Evalauate();
s1->Output();
return 0;
}
输入
输入5行
第1行是学生姓名
第2和3行是两次随堂考试成绩
第4行是期中考试成绩
第5行是期末考试成绩
输出
如果输入的成绩超出了范围,则显示:error
如果输入的成绩在题目要求的范围内,则显示:姓名,总分和等级
#include <iostream>
#include <iomanip>
using namespace std;
class Score{
private:
string name;//记录学生姓名
double s[4];//存储4次成绩,s[0]和s[1]存储2次随堂考试,s[2]存储期中考试,s[3]存储期末考试
double total;//记录总评成绩
char grade='B'; //记录对应的等级
public:
void Input()
{
cin>>name;
cin>>s[0];
cin>>s[1];
cin>>s[2];
cin>>s[3];
}
public:
void Evalauate()
{
total=0.25*(s[0]+s[1])+0.25*s[2]+0.5*s[3];
int n=total/10;
switch(n)
{
case 10:
grade='A';
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='E';
}
}
public:
void Output()
{
if((s[0]<0)||(s[0]>50)||(s[1]<0)||(s[1]>50)||(s[2]<0)||(s[2]>100)||(s[3]<0)||(s[3]>100))
{
cout<<"error";
}
else
{
// cout<<"name: "<<name<<", total: "<<fixed<<setprecision(1)<<total<<", grade: "<<grade<<endl;//保留一位小数
cout<<"name: "<<name<<", total: "<<total<<", grade: "<<grade<<endl;
}
}
};
int main()
{
Score *s1=new Score;
s1->Input();
s1->Evalauate();
s1->Output();
return 0;
}