哪位高手帮我解决一下这道题,不胜感激.~~~

编写一个程序:输入几个学生的姓名,英语和计算机成绩,然后按总分从高到低排序.(要求定义一个student类,用友元实现排序.)用C++sourcefile写的... 编写一个程序:输入几个学生的姓名,英语和计算机成绩,然后按总分从高到低排序.(要求定义一个student类,用友元实现排序.)
用C++ source file写的
展开
 我来答
高原狼人
2007-10-07 · TA获得超过924个赞
知道小有建树答主
回答量:671
采纳率:100%
帮助的人:0
展开全部
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#define N 60
int s;
//*****************************************************************************************
class student
{
public:
void get_in();
void displiy();

friend void scort() ;//友元
private:
string name;
float scor[2];
float sum;

}stu[N] ;

void student:: get_in() //录入学生信息
{
cout<<"姓名: ";
cin>>name;

cout<<"依次输入 英语和计算机成绩:";
for(int j=0;j<2;j++)
cin>>scor[j];
sum=scor[0]+scor[1];
int a=1;
while(a==1) //判断是否是输入的百分制成绩
{
for(j=0;j<2;j++)
if(scor[j]>100||scor[j]<0)
{
cout<<"\n\n\t请从新输入百分制成绩!!!\n";

for(int j=0;j<2;j++)
cin>>scor[j];
a=1;
}
else
a=0;
}

}

void student::displiy()
{
cout<<setw(10)<<name<<setw(10)<<sum;

}

//***********************************************************************************

void mainget_in() //主录入函数
{
char ch;
bool teap=true;
int i=0;
while(teap==true) //录入
{
stu[i].get_in();
cout<<"继续录入y,任意键结束录入!\n";
cin>>ch;
if(ch=='y'||ch=='Y')
;
else
teap=false;
i++;
s=i; //s来累计输入了多少人
}

}

//******************************************************************************
void scort() //各门成绩从高到底输出
{

cout<<"\t~~~~~~~~~成绩从高到低输出(相同成绩先录入先输出)~~~~~~~~~~~~\n";
cout<<"\n---------------------------------------------------------------------------\n";

cout<<setw(10)<<"姓名"<<setw(10)<<"总分"<<setw(10)<<"英语"<<setw(10)<<"计算机"<<endl;
for(int k=0;k<s-1;k++)
for(int i=0;i<s-1-k;i++)
if(stu[i].sum<stu[i+1].sum)
{
string stu3;
stu3=stu[i].name;
stu[i].name=stu[i+1].name;
stu[i+1].name=stu3;

float t;

for(int j=0;j<2;j++)
{
t=stu[i].scor[j];
stu[i].scor[j]=stu[i+1].scor[j];
stu[i+1].scor[j]=t;
}
t=stu[i].sum;
stu[i].sum=stu[i+1].sum;
stu[i+1].sum=t;
//交换两个学生的全部信息
}

for(int i=0;i<s;i++)
{
stu[i].displiy();
for(int j=0;j<2;j++)
cout<<setw(10)<<stu[i].scor[j];
cout<<endl;
}

cout<<"\n---------------------------------------------------------------------------\n";
}

int main()
{
mainget_in();

scort() ;
return 0;

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式