大佬求教
休道安南 2021-05-20 04:26:46 求救
//请注意:只能在原句上修改,而不能增加或删除语句。本题一共含有6个错误。#include <iostream>
#include <string>
using namespace std;
class StudentArray;
class Student{ string name; //姓名 int age; //年龄 double score; //分数public: void input(); friend class StudentArray; //将StudentArray声明为友元类,方便操作};void Student::input(){ cout << "请输入学生姓名:"; cin >> name; cout << "请输入学生年龄:"; cin >> age; cout << "请输入学生成绩:"; cin >> score;}class StudentArray{ Student *p; //动态数组的指针 int len; //数组的长度 int last; //数组最后一个元素的下标public: StudentArray(int length = 0); ~StudentArray(); StudentArray(StudentArray &arr); StudentArray& operator=(StudentArray &arr); void add(Student &s); //增加对象s到该数组中 double getaverage(); //求出所有学生成绩的平均值 };StudentArray::StudentArray(int length = 0){ len = length; last = -1; if(len > 0) p = new Student[len]; else p = NULL;}StudentArray::~StudentArray(){ delete p[];}StudentArray::StudentArray(StudentArray &arr){ len = arr.len; last = -1; p = new Student[len]; for(int i = 0 ; i <= last ; i++) p[i] = arr.p[i];}StudentArray& StudentArray::operator=(StudentArray &arr){ delete []p; len = arr.len; last = arr.last; p = new Student[len]; for(int i = 0 ; i <= last ; i++) p[i] = arr.p[i]; return this;}void StudentArray::add(Student &s){ if(last == len) return; //已满则放弃增加 last++; p[last] = s;}double StudentArray::getaverage(){ if(last == -1) return 0; double sum = 0; for(int i = 0 ; i <= last ; i++) sum += p[i].score; return sum / last;}int main(){ StudentArray s1(3) , s2; Student temp; int i; for(i = 0 ; i < 3 ; i++) { temp.input(); s1.add(temp); cout << endl; } s2 = s1; //这里故意测试了=号的使用 cout << "三个人的均分是:" << s2.getaverage() << endl; return 0;}