用C++面向对象的程序设计方法,实现找出一组学生中成绩最高者,要求用到友元函数实现查找最高成绩
答案:1 悬赏:80 手机版
解决时间 2021-02-18 02:01
- 提问者网友:战魂
- 2021-02-17 10:23
用C++面向对象的程序设计方法,实现找出一组学生中成绩最高者,要求用到友元函数实现查找最高成绩
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-02-17 11:48
#include<iostream>
#include<cstring>
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:"<<name<<" score:"<<score;
}
};
student getMaxScore(student ss[],int n){
student max=ss[0];
for(int i=1;i<n;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<T> 对象。
可以提供各种类似于数组,但比数组安全的方法。
好久不用C++了。vector<T>可能要你自己查一查用法。
#include<cstring>
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:"<<name<<" score:"<<score;
}
};
student getMaxScore(student ss[],int n){
student max=ss[0];
for(int i=1;i<n;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<T> 对象。
可以提供各种类似于数组,但比数组安全的方法。
好久不用C++了。vector<T>可能要你自己查一查用法。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯