大佬求教

休道安南 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;}
...全文
3027 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

6,128

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧