大一C++问题2

//5.建立一个对象数组,内存放5个学生的数据(学号,成绩),设立一个函数max,用指向对象的指针做函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号#include <iostream>using namespace std;class student{private: intnum; intscore;public: student(intn,int sc){num=n;score=sc;} intgetnum(){return num;} intgetscore(){return score;} voidmax(student *p[5]);};void student::max(student *p[5]){ intm,j; for(inti=0;i<=4;i++) { if(p[i]->getnum()<p[i+1]->getnum()) {m=p[i+1]->getnum();j=i+2;} else {m=p[i]->getnum();j=i+2;} } cout<<"max_score="<<max<<endl; cout<<"num="<<j<<endl; }void main(){ students[5]={student(1,90),student(2,91),student(3,93),student(4,94),student(5,95)}; student*p[5]; for(inti=0;i<5;i++) {p[i]=&s[5];} p->max(*p[5]);} 错误:主函数最后一行提示有问题: error C2227: left of ✀->max✀ must point to class/struct/union应该怎么改
2026年09月23日 00:45
有4个网友回答
网友(1):

注意看下面代码的注释:

#include
using namespace std;
class student
{
private:
int num;
int score;
public:
student(int n,int sc){num=n;score=sc;}
int getnum(){return num;}
int getscore(){return score;}
// void max(student *p[5]);
};
// void student::max(student *p[5])
void max(student *p[5])
{
int m=0,j=0; // 注意初始化
for(int i=0;i<=4;i++)
{
if(m < p[i]->getscore()) {// 按你说的题目要求,这里应该是 getscore而不是getnum吧
m=p[i]->getscore(); // 注意是与m值作比较而不是单纯的相邻两个数比较
j=i+1;
}
}
cout<<"max_score="< cout<<"num="<
}
void main()
{
student s[5]={student(1,90),student(2,91),student(3,93),student(4,94),student(5,95)};
student*p[5];
for(int i=0;i<5;i++) {p[i]=&s[i];} // 这里应该是 s[i] 而非 s[5]
// p->max(*p[5]);
max(p);
}

网友(2):

关键是你的 student() 定义的是一个“put” 函数,不是结构。
还有max() 函数当i=4的时候,i+1=5已经使数组越界了。
第一位仁兄改的没错,你的程序说是要选最高成绩,可写得又象是要“冒泡排序”。
你是大一学生么?
你们的教材是哪本?

网友(3):

你的代码还有很多小地方,我把 你的函数去掉了。函数这块得慢慢来:
#include using namespace std;
class student{private:
int num;
int score;
public:
student(int n,int sc)
{num=n;score=sc;}

int getnum(){
return num;
}
int getscore(){return score;}

//void max(student *p[5]);
};

void main(){ int i;
int m,j;
student s[5]={student(1,90),student(2,91),student(3,93),student(4,94),student(5,95)};
student *p[5];
for( i=0;i<5;i++)
{
p[i]=&s[i];}

for( i=0;i<4;i++)
{
if(p[i]->getscore()getscore())
{
m=p[i+1]->getscore();j=i+1;
}
else
{m=p[i]->getnum();j=i;}
}
cout<<"max_score="< cout<<"num="<
}

网友(4):

因为你的p是指针的指针,不是指针 p[0] p[1]这些才是指针。其他的错误没看。