用C++面向对象的程序设计方法,实现找出一组学生中成绩最高者,要求用到友元函数实现查找最高成绩

如题所述

#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>可能要你自己查一查用法。

温馨提示:内容为网友见解,仅供参考
无其他回答

用C++编写一个学生成绩管理系统,并编写一个友元函数能完成对成绩进行从...
cout<<"2:以英语成绩排序"<<endl; cout<<"3:以数学成绩排序"<<endl; cout<<"4:以计算机成绩排序"<<endl; cout<<"5:返回"<<endl; cout<<"请选择(1-5):"<<endl; cin>>c; switch (c) { case '1':pnumb(); break; case '2':peng(); break; case '3':pmat(); break; case '4':pc...

分数的四则运算,面向对象的C++程序设计,求代码
int m = n;while(n%a || n%b)n += m;return n;}\/\/ 求最大公约数static int MaxCommFactor(int a, int b){if(a < 0) a = -a;if(b < 0) b = -b;int n = min(a, b);while(n){if(a%n == 0 && b%n == 0)break;n--;}return n;}};const double Fraction:...

c++编程求助 如图,想通过友元函数实现分数与整数的加法,这个函数错在...
你重载的是 分数+分数,没有重载分数+整数

...内放五个学生的数据(学号,成绩),建立一个函数max,用指向对象的...
建立对象如下:class Student { public:Student(string n,float s):number(n),score(s){} friend void max(Student *); \/\/声明友元函数 private:string number; \/\/将学号声明为字符串 float score;};

c++编程的解答 不要C语言
\/\/显示所有属性值 friend void sort(Student s[],int n);\/\/友元函数用于根据成绩排序private: int sNo; char sName[10]; int score; };Student::Student(int no,char name[], int g){sNo=no;strcpy(sName,name);score=g;}Student::Student(){}int Student::getScore(){ret...

c++编程题 编写一个三维向量类,要求用友元函数重载“+”
5.调用操作符重载函数的方式:5.1调用类中的操作符重载函数的方法:当调用类中定义的操作符重载函数时最左边的对象是调用操作符重载函数的对象。比如在类hyong中重定义的+操作符hyongoperator+(hyongm){},有类hyong的对象m和n则调用操作符重载函数的方法有m+n和m.operator+(n),前一条语句会自动转换为后面这...

c++求两直线交点问题。程序如下,用友元函数实现计算交点。帮忙改改...
MyPoint setpoint(Line &l,Line &m){ MyPoint p;p.x=(m.b-l.b)\/(l.a-m.a);p.y=(l.a*m.b-m.a*l.b)\/(l.a-m.a);return p;} 这的MyPoint p; 要加两个参数 而且不能直接用p.x p.y

《Effective C++》中文版 改善程序与设计的55个具体做法 高清PDF电子书...
delete`的策略,分析`new-handler`的行为,选择适当的时机替换`new`,编写代码时遵循常规,确保`new`与`delete`成对出现。本书还提供了额外资源和索引,鼓励读者下载高清PDF电子书,并利用书中的书签功能,方便查阅和学习。通过遵循书中提供的55个具体方法,读者可以显著提升C++程序的质量与设计能力。

分别用成员函数和友元函数来求圆的面积和周长。
class Circle { public:Circle(double r=0):radius(r){} double Area(){ return 3.14 * radius * radius; } friend double Perimeter(const Circle &c);private:double radius;};double Perimeter(const Circle &c){ return 2.* 3.14 * c.radius;} int main(){ Circle a(10.);cout<<...

c++程序设计内容简介
第六章深入探讨类和对象的使用,包括类的声明与定义、构造和析构,静态成员、友元以及运算符重载等高级概念。第七章重点讨论C++面向对象编程的思想、概念和方法,帮助读者掌握面向对象设计的核心。第八章介绍运行时类型识别(RTTI)与异常处理,这些是现代C++程序设计中不可或缺的部分。本书内容详实,实例...

相似回答