北林oj实验一续(1)

评分程序

描述

为一门课写一个评分程序,评分原则如下:

(1)有两次随堂考试,每次满分50分;

(2)有一次期中考试和一次期末考试,每次满分100分;

(3)期末考试占总评成绩的50%,期中考试占总评成绩的25%,两次随堂考试总共占25%;

(4)总评成绩90~100分为A,80~89分为B,70~79分为C,60~69分为D,低于60分为E;

设计一个Socre类,数据成员如下:

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

如果输入的成绩在题目要求的范围内,则显示:姓名,总分和等级,详见样例

输入样例 1 

Jack
90
90
100
100

输出样例 1

error

输入样例 2 

Mary
50
50
90
100

输出样例 2

name: Mary, total: 97.5, grade: A

提示

冒号和逗号后各有一个空格

实例一(格日)

#include<iostream>
#include<cstring>
using namespace std;
 
class Score {
public:
	string name;
	double s[4];
	double total;//记录总评成绩
	char grade;  //记录对应的等级
	void Input();
	void Evalauate();
	void Output();
};
 
void Score::Evalauate(){
	total = (s[0] + s[1])*(1 / 4.0) + s[2] * (1 / 4.0) + s[3] * (1 / 2.0);
	if (total > 89 && total < 101)
		grade = 'A';
	else if (total > 79)
		grade = 'B';
	else if (total > 69)
		grade = 'C';
	else if (total > 59)
		grade = 'D';
	else
		grade = 'E';
 
}
void Score::Input() {
	int i;
	
	cin >> name;
	for (i = 0; i < 4; i++)
		cin >> s[i];
}
void Score::Output() {
	if (s[0] > 50 || s[0] < 0)
		cout << "error" << endl;
  else if(s[1] > 50 || s[1] < 0)
		cout << "error" << endl;
  else if(s[2] > 100 || s[2] < 0)
		cout << "error" << endl;
  else if(s[3] > 100 || s[3] < 0)
		cout << "error" << endl;
	else 
		cout << "name:" <<" "<< name << "," <<" "<< "total:" <<" "<< total << "," <<" "<< "grade:"<<" "<<grade << endl;
 
 
 
}
	int main() {
		Score *s1 = new Score;
		s1->Input();
		s1->Evalauate();
		s1->Output();
 
		return 0;
	}

实例二(品丞)

	#include<iostream>
 
using namespace std;
 
class Score
{
	private:
		string name;
		double s[4];
		double total;
		char grade;
	public:
		void Input();
		void Evalauate();
		void Output();
};
 
 
void Score::Input(){
	cin>>name; 
	int i;
	for(i=0;i<4;i++){
		cin>>s[i];
	}
}
 
void Score::Evalauate(){
	total=(s[0]+s[1])*0.25+s[2]*0.25+s[3]*0.5;
	if(total>=90 && total<=100)
		grade='A';
	if(total>=80 && total<=89)
		grade='B';
	if(total>=70 && total<=79)
		grade='C';
	if(total>=60 && total<=69)
		grade='D';
	if(total>=0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值