c++编程的解答 不要C语言

(1)设计一个学生类Student:
属性有:学号、姓名、成绩;
行为包括:1.设置各个属性值(用构造函数完成);
2.得到某个属性值;
3.显示所有属性值;
(2)设计Student类的一个友元函数friend void sort(Student s[],int n)将学生成绩排序

有5个学生的数据,每个学生的数据包括学号、姓名和成绩:

101 王刚 89
102 张刚 68
103 李刚 78
104 刘刚 56
105 赵刚 69

主函数中定义一个对象数组teststudent[5],并用5名学生的学号、姓名和成绩对其初始化。然后完成以下任务:
(1) 统计大于或等于平均分的人数;
(2) 将5个学生按成绩由高到低排序;
(3) 输出排序后学生的学号、姓名和平均成绩;

完成这个与实验后(用的是面向对象程序设计方法)与实验五中处理同样的问题(用的是面向过程程序设计方法)做一下比较,体会它们的不同之处。进而逐步适应和掌握面向对象程序设计方法。

注:假设a,b是两个同类的对象,那么
a = b;
相当于b的数据成员对a的数据成员分别赋值
部分代码:
#include <iostream.h>
#include <string.h>
class Student{
public:
Student(int no,char name[], int g); //构造函数
Student();//默认构造函数
char *getName();//得到姓名
int getNo(); //得到学号
int getScore();//得到成绩
void output();//显示所有属性值
friend void sort(Student s[],int n);//友元函数用于根据成绩排序
private:
int sNo;
char sName[10];
int score;
};

void sort(Student s[],int n){ //友元函数定义
.......
}
void main(){
const int number=5;
Student teststudent[number]={Student(101,” 王刚”, 89),Student(102,”张刚”, 68),
Student(103,”李刚”, 78),Student(104,”刘刚”,56), Student(105,”赵刚”, 69)};

/*若从键盘输入数据,需下面这段代码
int i,s,no;
char name[10];
for(i=0;i<number;i++){
cin>>no>>name>>s;//从键盘输入一个学生的学号、姓名和成绩
teststudent[i]=Student(no,name,s);//将一个无名对象赋给对象数组元素
}
*/
.......
.......
}

我帮你写!你什么时候要呢!

下面的程序已经按照你的要求写好了!如果有疑问的话就追问!

如果没有问题了的话就麻烦把我的答案选为满意答案!

#include <iostream.h>
#include <string.h>
class Student{
public:
    Student(int no,char name[], int g); //构造函数
    Student();//默认构造函数
    char *getName();//得到姓名
    int getNo();  //得到学号
    int getScore();//得到成绩
    void output();//显示所有属性值
    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()
{
return score;
}
char *Student::getName()
{
return sName;
}
void Student::output()
{
cout<<"name:"<<sName<<" sNo:"<<sNo<<" score:"<<score<<endl;
}
int Student::getNo()
{
return sNo;
}
void sort(Student s[],int n){ //友元函数定义
Student temp;
int maxnumber;
for(int i=0;i<n-1;i++)
{
maxnumber=i;
for(int j=i+1;j<n;j++)
if(s[j].score>s[maxnumber].score)
maxnumber=j;
temp=s[maxnumber];
s[maxnumber]=s[i];
s[i]=temp;
}
}
void main()
{
     const int number=5;
       Student teststudent[number]={Student(101,"王刚", 89),Student(102,"张刚", 68),
Student(103,"李刚", 78),Student(104,"刘刚",56), Student(105,"赵刚", 69)};
   /*若从键盘输入数据,需下面这段代码
      int i,s,no;
     char name[10];
     for(i=0;i<number;i++){
        cin>>no>>name>>s;//从键盘输入一个学生的学号、姓名和成绩
        teststudent[i]=Student(no,name,s);//将一个无名对象赋给对象数组元素
      }
     */   
   cout<<"获取一个学生的姓名:"<<endl;
   cout<<teststudent[0].getName()<<endl;
   cout<<"获取一个学生的学号:"<<endl;
   cout<<teststudent[0].getNo()<<endl;
   cout<<"获取一个学生的分数:"<<endl;
   cout<<teststudent[0].getScore()<<endl;
   cout<<"正在进行成绩的排序......"<<endl;
   sort(teststudent,number);
   cout<<"已经排序好!"<<endl;
   cout<<"输出所有学生成绩排序后的信息:"<<endl;
   for(int i=0;i<number;i++)
   teststudent[i].output();
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-24
#include <iostream>
#include <string>
#include <list>
using namespace std;
class Student{
public:
Student(int no,char name[], int g); //构造函数
Student();//默认构造函数
char *getName();//得到姓名
int getNo(); //得到学号
int getScore();//得到成绩
void output();//显示所有属性值
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()
{
return score;
}
char *Student::getName()
{
return sName;
}
void Student::output()
{
cout<<"name:"<<sName<<" sNo:"<<sNo<<" score:"<<score<<endl;
}
int Student::getNo()
{
return sNo;
}
typedef struct Data{
int data;
int index;
};
bool sortByScore(const Data& data1,const Data& data2)
{
return (data1.data<data2.data);
}
void sort(Student s[],int n){ //友元函数定义
list <Data> vectorS;
Data *pdata = NULL;
Student *pStudent;
int i=0;
pdata = new Data[n];
pStudent = new Student[n];
for(i = 0;i<n;i++)
{
pStudent[i]=s[i];
pdata[i].data = s[i].getScore();
pdata[i].index = i;
vectorS.push_back(pdata[i]);
}
vectorS.sort(sortByScore);
list <Data>::const_iterator idata;
i = 0;
for(idata = vectorS.begin();idata!=vectorS.end();idata++)
{
s[i++]=pStudent[idata->index];
}
delete []pdata;
delete pStudent;

}
void main()
{
const int number=5;
Student teststudent[number]={Student(101,"王刚", 89),Student(102,"张刚", 68),
Student(103,"李刚", 78),Student(104,"刘刚",56), Student(105,"赵刚", 69)};
/*若从键盘输入数据,需下面这段代码
int i,s,no;
char name[10];
for(i=0;i<number;i++){
cin>>no>>name>>s;//从键盘输入一个学生的学号、姓名和成绩
teststudent[i]=Student(no,name,s);//将一个无名对象赋给对象数组元素
}
*/
cout<<"获取一个学生的姓名:"<<endl;
cout<<teststudent[0].getName()<<endl;
cout<<"获取一个学生的学号:"<<endl;
cout<<teststudent[0].getNo()<<endl;
cout<<"获取一个学生的分数:"<<endl;
cout<<teststudent[0].getScore()<<endl;
cout<<"正在进行成绩的排序......"<<endl;
sort(teststudent,number);
cout<<"已经排序好!"<<endl;
cout<<"输出所有学生成绩排序后的信息:"<<endl;
for(int i=0;i<number;i++)
teststudent[i].output();
getchar();
}
第2个回答  2013-11-22
这位仁兄的答案挺好的了
相似回答
大家正在搜