注意看下面代码的注释:
#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="<
}
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);
}
关键是你的 student() 定义的是一个“put” 函数,不是结构。
还有max() 函数当i=4的时候,i+1=5已经使数组越界了。
第一位仁兄改的没错,你的程序说是要选最高成绩,可写得又象是要“冒泡排序”。
你是大一学生么?
你们的教材是哪本?
你的代码还有很多小地方,我把 你的函数去掉了。函数这块得慢慢来: getscore())
#include
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()
{
m=p[i+1]->getscore();j=i+1;
}
else
{m=p[i]->getnum();j=i;}
}
cout<<"max_score="<
}
因为你的p是指针的指针,不是指针 p[0] p[1]这些才是指针。其他的错误没看。