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;