使用c++面向对象的程序设计方法,找出十个学生成绩中的最高者,并输出

2025-04-13 11:46:11
推荐回答(1个)
回答1:

#include
#include
using namespace std;
class student{
private:
string name;
int  score;
public:
student(){
}

student(string _n,int _s){
name=_n;
score=_s;
}
friend student getMaxScore(student ss[],int n);
void initStudent(string _n,int _s){
score=_s;
name=_n; 
}
void printStudent()
{
cout<<"name:"< }

};
student getMaxScore(student ss[],int n){
student max=ss[0];                            
for(int i=1;i {
if(ss[i].score>max.score) max=ss[i];
}
return max;
}

int main(){
student ss[10];                     //非常重要的警告:初学者,类对象数组会自动调用构造函数。此时对象已经建立。
                                     //但是调用的是默认的student();需要根据需要赋值。不要把对象数组看成基本类型数组(int a[],char a[]这种)。
 //可以替换成 student ss[10]={student("zkj",100",student("ddx",99),。。。。。。。 }这种跟直观的对象数组赋值方法。跟多问题请百度。 
string in;
int    is; 
for(int i=0;i<10;i++){
cin>>in>>is;
ss[i].initStudent(in,is);          //直接使用ss[i]=student(in,is)会发生错误。因为对象已经建立。对象数组会自动调用构造函数。 
}
student maxss=getMaxScore(ss,10);
maxss.printStudent();
}

就是这样。
如果跟通用的方法。建议使用STL(C++标准类模板库)提供的vector 对象。
可以提供各种类似于数组,但比数组安全的方法。


好久不用C++了。vector可能要你自己查一查用法。