C++评分程序

题目描述

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

(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;
}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值