北林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 && total<=59)
		grade='E';
	
}
 
void Score::Output(){
	if(s[0]<0||s[1]<0||s[0]>50||s[1]>50||s[2]<0||s[2]>100||s[3]<0||s[3]>100){
		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>>s[0]>>s[1]>>s[2]>>s[3];
}
void Score::Evalauate()
{
	grade='B';
	total=(s[0]+s[1])*0.25+s[2]*0.25+s[3]*0.5;
	if(total>=90) grade='A';
	else if(total>=80) grade='B';
	else if(total>=70) grade='C';
	else if(total>=60) grade='D';
	else grade='E';
}
void Score::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<<"name: "<<name<<", total: "<<total<<", grade: "<<grade;
	}
	else
	{
		cout<<"error";
	}
}
int main()
{
	Score *s1=new Score;
	s1->Input();
	s1->Evalauate();
	s1->Output();
	return 0;
}

实例四(明钰)

	#include <iostream>
#include <string>
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;  //记录对应的等级	
	public:
		void Input();
		void Evalauate();
		void Output();
};
void Score::Input()
{
	int i;
	getline(cin,name);
	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<60)
		grade='E';
	else if(total<70)
		grade='D';
	else if(total<80)
		grade='C';
	else if(total<90)
		grade='B';
	else
		grade='A';
}
void Score::Output()
{
	int i,flag=1;
	for(i=0;i<4;i++){
		if((i==0||i==1)&&(s[i]<0||s[i]>50))
		{
			cout<<"error";
			flag=0;
			break;
		}
		if((i==2||i==3)&&(s[i]<0||s[i]>100))
		{
			cout<<"error";
			flag=0;
			break;
		}
	}
	if(flag==1)
		cout<<"name: "<<name<<", "<<"total: "<<total<<", "<<"grade: "<<grade;
}
int main()
{
    Score *s1=new Score;
    s1->Input();
    s1->Evalauate();
    s1->Output();
    return 0;
}

实例五(雪莹)

#include <iostream>
#include<stdlib.h>
#include<cstring>
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;  //记录对应的等级
    public:
    	void Input();
    	void Evalauate();
    	void Output();
    	//Score(){
    		//grade='B';
		//}
};
void Score::Input(){
	cin>>name;
	cin>>s[0]>>s[1]>>s[2]>>s[3];
}
void Score::Evalauate(){
	total=0.5*s[3]+0.25*s[2]+0.25*(s[0]+s[1]);
	if(total>=90&&total<=100){
		grade='A';
	}
	else if(total>=80&&total<=89){
		grade='B';
	}
	else if(total>=70&&total<=79){
		grade='C';
	}
	else if(total>=60&&total<=69){
		grade='D';
	}
	else{
		grade='E';
	}
 
}
void Score::Output(){
	if(s[0]>50||s[1]>50||s[2]>100||s[3]>100||s[0]<0||s[1]<0||s[2]<0||s[3]<0){
		cout<<"error"<<endl;
	}
	else{
		cout<<"name: "<<name<<", "<<"total: "<<total<<", "<<"grade: "<<grade;
	}
}
int main()
{
    Score *s1=new Score;
    s1->Input();
    s1->Evalauate();
    s1->Output();
    return 0;
}

实例六(东灵)

#include <iostream>
#include<string>
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(){
		grade='B';
		cin>>name;
		cin>>s[0];
		cin>>s[1];
		cin>>s[2];
		cin>>s[3]; 
}
void Score::Evalauate(){
	if(s[0]>50||s[1]>50||s[2]>100||s[3]>100||s[0]<0||s[1]<0||s[2]<0||s[3]<0)
		{
		cout<<"error";
		exit(0);
		}	
	total=s[0]*0.25+s[1]*0.25+s[2]*0.25+s[3]*0.5;
	if(90<=total&&total<=100)
		grade='A';
	else if(80<=total&&total<=89)
		grade='B';
	else if(70<=total&&total<=79)
		grade='C';
	else if(60<=total&&total<=69)
		grade='D';
	else
		grade='E';		
}
void Score::Output(){
	cout<<"name: "<<name<<", "<<"total: "<<total<<", "<<"grade: "<<grade;
}
int main()
{
    Score *s1=new Score;
    s1->Input();
    s1->Evalauate();
    s1->Output();
    return 0;
}

实例七(monitor)

#include<iostream>
#include<string>
using namespace std;
 
class Score
{
private:
	char grade;  //记录对应的等级
	string name;//记录学生姓名
	double s[4];//存储4次成绩,s[0]和s[1]存储2次随堂考试,s[2]存储期中考试,s[3]存储期末考试
	double total;//记录总评成绩
public:
//	Score(char grade, string name, double s[4], double total) ;
	void Input();//应该用一个for循环,输入四次的成绩,然后输入之后做出一个判断(是不是要用到bool类型?类似于flag,在第一次和第二次的时候阈值是50,第三次和第四次阈值是100) 
	void Evaluate();//这个函数就是负责计算
	void Output();//这个函数就是负责判断和输出 
};//算了,还是输完了再判断吧 
void Score::Input()
{
	//double s[4];啊啊啊啊啊啊原来是这里!
	int i;
	getline(cin,name);
	for (i = 0; i < 4; i++)
	{
		cin >> s[i];
	}
	
}
void Score::Evaluate()
{
	total = (s[0] + s[1]) * 0.25 + s[2] * 0.25 + s[3] * 0.5;
	grade = 'B';
	//不知道用不用。。。先留着8
	if (89 < total && total< 101)
	{
		grade = 'A';
	}
	else if (79 < total && total < 90)
	{
		grade = 'B';
	}
	else if (69 < total && total < 80)
	{
		grade = 'C';
	}
	else if (60 < total && total < 70)
	{
		grade = 'D';
	}
	else
	{
		grade = 'E';
	}
}
void Score::Output()//在这儿判断 
{
	//if (s[0] > 50 || s[0] < 0 || s[1] < 0 || s[1] > 50)//能这么写???试试
	不试了,看着别扭 
	//{
	//	cout << "error" << endl;
	//}
	//else if (s[2] > 100 || s[2] < 0||s[3]<100|| s[3] > 100)
	//{
	//	cout << "error" << endl;
	//}
	//else
	//{
	//	cout << "name: "<< name << ", "  << "total: " << total << ", "<< "grade: " << grade;
	//}
	int i, flag = 1;
	for (i = 0; i < 4; i++)
	{
		if ((i == 0 || i == 1) && (s[i] < 0 || s[i]>50))
		{
			cout << "error";
			flag = 0;
			break;
		}
		if ((i == 2 || i == 3) && (s[i] < 0 || s[i]>100))
		{
			cout << "error";
			flag = 0;
			break;
		}
	}
	if (flag == 1)
	{
		cout << "name: " << name << ", " << "total: " << total << ", " << "grade: " << grade;
	}
		
 
}
 
int main()
{
	Score s1;
	s1.Input();
	s1.Evaluate();
	s1.Output();
	return 0;
}

实例八(永琪)

#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>
#include <string>
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;  //记录对应的等级
public:
	void Input()
	{
		cin>> name;
		int i;
		for(i=0;i<4;i++)
		{
			cin >> s[i];
		}
	};
	void Evalauate()
	{
		grade = 'B';
		total = s[0] * 0.25 + s[1] * 0.25 + s[2] * 0.25 + s[3] * 0.5;
		if (total < 60) { grade = 'E'; }
		else if (total >= 60 && total < 70) { grade = 'D'; }
		else if (total >= 70 && total < 80) { grade = 'C'; }
		else if (total >= 80 && total < 90) { grade = 'B'; }
		else if (total >= 90 && total <= 100) { grade = 'A'; }
		else;
	};
	void Output()
	{
		if (s[0] > 50 || s[1] > 50 || s[2] > 100 || s[3] > 100 || s[0] < 0 || s[1] < 0 || s[2] < 0 || 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>
	#include<string>
	using namespace std;
	class Socre
	{
	private:
		string name;
		double s[4];
		double total;
		char grade='B';
	public:
		void Input();
		void Evaluate();
		void Output();
	};
	void Socre::Evaluate()
	{
		total = (s[0] + s[1])*(0.25) + (s[2])*(0.25) + (s[3])*(0.5);//????
	}
	void Socre::Input()
	{
		
		cin >> name;
		int i;
		for (i = 0; i <= 3; i++)
		{
			
			cin >> s[i];
		}
	}
	
	void Socre::Output()
	{
		if(total>=90&&total<=100&&s[0]>=0&&s[0]<=50&&s[1]>=0&&s[1]<=50&&s[2]>=0&&s[2]<=100&&s[3]>=0&&s[3]<=100)
		{
			grade = 'A';
			cout<<"name: " << name <<", ";
			cout <<"total: " << total<<", ";
			cout <<"grade: " << "A"<< endl;
		}
		else if (total >= 80 && total<= 89 && s[0] >= 0 && s[0] <= 50 && s[1] >= 0 && s[1] <= 50 && s[2] >= 0 && s[2] <= 100 && s[3] >= 0 && s[3] <= 100)
		{
			grade = 'B';
			cout<<"name: " <<name<<", ";
			cout <<"total: " <<total<<", ";
			cout<<"grade: " <<"B"<< endl;
		}
		else if (total >= 70 && total <= 79 && s[0] >= 0 && s[0] <= 50 && s[1] >= 0 && s[1] <= 50 && s[2] >= 0 && s[2] <= 100 && s[3] >= 0 && s[3] <= 100)
		{
			grade = 'C';
			cout<<"name: " << name<<", ";
			cout <<"total: " << total<<", ";
			cout<<"grade: " << "C" << endl;
		}
		else if (total >= 60 && total <= 69 && s[0] >= 0 && s[0] <= 50 && s[1] >= 0 && s[1] <= 50 && s[2] >= 0 && s[2] <= 100 && s[3] >= 0 && s[3] <= 100)
		{
			grade = 'D';
			cout <<"name: " << name<<", ";
			cout<<"total: " << total<<", ";
			cout <<"grade: " << "D";
		}
		else if(total>=0&&total<=59 && s[0] >= 0 && s[0] <= 50 && s[1] >= 0 && s[1] <= 50 && s[2] >= 0 && s[2] <= 100 && s[3] >= 0 && s[3] <= 100)
		{
			grade = 'E';
			cout<<"name: " << name<<", ";
			cout <<"total: " << total<<", ";
			cout<<"grade: " << "E";
		}
		else
		{
			cout <<"error";
		}
	}
	int main()
	{
		Socre *s1 = new Socre();
		s1->Input();
		s1->Evaluate();
		s1->Output();
		return 0;
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值