-->
当前位置:首页 > 题库 > 正文内容

6-2 学生成绩的快速录入(构造函数) (10 分)

Luz4年前 (2021-03-08)题库1722
6-2 学生成绩的快速录入(构造函数) (10 分)

现在需要录入一批学生的成绩(学号,成绩)。其中学号是正整数,并且录入时,后录入学生的学号会比前面的学号大;成绩分两等,通过(Pass,录入时用1代表),不通过(Fail,录入时用0代表)。

由于很多学号都是相邻的,并且学号相邻的学生成绩常常相同。所以在录入时,适当地加了速。如果当前学生的学号比前面的学号大1,且成绩与前面的成绩相同,则只输入0即可。

类定义:

完成Student类

裁判测试程序样例:

#include<iostream>using namespace std;/* 请在这里填写答案 */int main(){    const int size=100;    int i, N, no, score;
    Student *st[size];    cin>>N;    for(i=0; i<N; i++){        cin>>no;        if(no>0){            cin>>score;
            st[i]=new Student(no, score);
        }        else
            st[i]=new Student(*st[i-1]);
    }    cout<<Student::count<<" Students"<<endl;    for(i=0;i<N;i++) st[i]->display();    for(i=0;i<N;i++) delete st[i];    return 0;
}

输入样例:

5
3 0
0
7 1
0
12 1

输出样例:

5 Students
3 Fail
4 Fail
7 Pass
8 Pass
12 Pass
作者
何振峰
单位
福州大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
class Student{

    public:
        static int count;
        int no;
        double score;
        
  Student(int n,int s)
  {
    no=n;
    score=s;
    count++;
  }
  Student(Student &p)
  {
    no=p.no+1;
    score=p.score;
    count++;
  }
  void display()
  {
    cout<<no<<" ";
    if(score)
     cout<<"Pass"<<endl;
    else
     cout<<"Fail"<<endl;
  }
    
};
int Student::count=0;