改写以下程序,要求定义类student,封装三个数据成员和两个成员函数input和output,使程序得到相同的运行结果。

#include
using namespace std;
struct student{    
char name[20];    
unsigned int id;    
double score;};
void input(student &stu){    
cout << "name ?";    
cin >> stu.name;    
cout << "id ?";    
cin >> stu.id;    
cout << "score ?";    
cin >> stu.score;}
void output(student &stu){    
cout << "name:" << stu.name << "\tid :" << stu.id << "\tscore : " << stu.score << endl;
}
int main(){    
student s = { "\0", 0, 0 };    
input(s);    
output(s);}

#include<iostream>
using namespace std;

struct student {
public:
    student(const char _name[20], unsigned int  _id,double _score)
    {
        for (size_t i=0; i<20;i++)
        {
            name[i] = _name[i];
        }
        id = _id;
        score = _score;
    }
    void input() {
        cout << "name ?";
        cin >> name;
        cout << "id ?";
        cin >> id;
        cout << "score ?";
        cin >> score;
    }
    void output() {
        cout << "name:" << name << "\tid :" << id << "\tscore : " << score << endl;
    }
private:
    char name[20];
    unsigned int id;
    double score;
};

int main() {
    student s = { "\0", 0, 0 };
    s.input();
    s.output();
}