搜索

...n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号...

发布网友 发布时间:3小时前

我来回答

1个回答

热心网友 时间:1小时前

#include<iostream>
#include<iomanip>
using namespace std;
struct student
{
char NAME[20];//名字
long NUM;//学号
double MT;//数学
double EN;//英语
double PH;//物理
double sum;//总分
};
int ReadScore(student stu[])//输入名字———成绩
{
int count=0;//人数
cout.setf(ios::right);
cout<<"名字"<<setw(5);
cout<<"学号"<<setw(5);
cout<<"数学"<<setw(5);
cout<<"英语"<<setw(5);
cout<<"物理"<<setw(5);
cout<<endl;
for(int i=0;i<30;i++)
{

cin>>stu[i].NAME>>stu[i].NUM>>stu[i].MT>>stu[i].EN>>stu[i].PH;
if(stu[i].MT<=0)
break;
count++;
}
return count;
}
int GetSum(student stu[],int n)
{
double Sum=0;
for(int i=0;i<n;i++)
{
stu[i].sum=0;
stu[i].sum=stu[i].MT+stu[i].EN+stu[i].PH; //总分
}
Sum=stu[i].sum;
return Sum;
}
void print_1(student stu[],int n)//打印学生成绩表
{
for(int m=n-1;m>0;m--)
{
int max=0;
char name[20];//姓名
long num=0;//学号
double mt=0;//数学
double en=0;//英语
double ph=0;//物理
for(int i=0;i<m;i++)//排序
{
if(stu[i].sum<stu[i+1].sum)
{
strcpy(name,stu[i].NAME);
strcpy(stu[i].NAME,stu[i+1].NAME);
strcpy(stu[i+1].NAME,name);

num=stu[i].NUM;
stu[i].NUM=stu[i+1].NUM;
stu[i+1].NUM=num;

mt=stu[i].MT;
stu[i].MT=stu[i+1].MT;
stu[i+1].MT=mt;

en=stu[i].EN;
stu[i].EN=stu[i+1].EN;
stu[i+1].EN=en;

ph=stu[i].PH;
stu[i].PH=stu[i+1].PH;
stu[i+1].PH=ph;

max=stu[i].sum;
stu[i].sum=stu[i+1].sum;
stu[i+1].sum=max;

}
}
}
cout.setf(ios::left);
cout<<"总成绩表:"<<endl;
cout<<"排名"<<setw(5);
cout<<"姓名"<<setw(5);
cout<<"学号"<<setw(5);
cout<<"总分"<<setw(5);
cout<<"高数"<<setw(5);
cout<<"英语"<<setw(5);
cout<<"物理"<<setw(5);
cout<<"平均分"<<endl;

for(int j=0;j<n;j++)
{
cout.setf(ios::left);
cout<<j+1<<setw(5);
cout<<stu[j].NAME<<setw(5);
cout<<stu[j].NUM<<setw(5);
cout<<stu[j].sum<<setw(5);
cout<<stu[j].MT<<setw(5);
cout<<stu[j].EN<<setw(5);
cout<<stu[j].PH<<setw(5);
cout<<stu[j].sum/3<<endl;

}
}
int find(student stu[],int n)
{
int a=0,b=0;
long num;
cin>>num;
for(int j=0;j<n;j++)
{
if(num==stu[j].NUM)
{
b++;
a++;
}
}
if(b!=0)
{
cout.setf(ios::left);
cout<<"排名"<<setw(5);
cout<<"姓名"<<setw(5);
cout<<"学号"<<setw(5);
cout<<"总分"<<setw(5);
cout<<"高数"<<setw(5);
cout<<"英语"<<setw(5);
cout<<"物理"<<setw(5);
cout<<"平均分"<<endl;
}
for(int i=0;i<n;i++)
{

if(num==stu[i].NUM)
{
cout.setf(ios::left);
cout<<i+1<<setw(5);
cout<<stu[i].NAME<<setw(5);
cout<<stu[i].NUM<<setw(5);
cout<<stu[i].sum<<setw(5);
cout<<stu[i].MT<<setw(5);
cout<<stu[i].EN<<setw(5);
cout<<stu[i].PH<<setw(5);
cout<<stu[i].sum/3<<endl;

}
}
if(a==0)
{
cout<<"查无此人!请重新输入:";
return -1;
}

}
int main()
{
student stu[30];
float a;
a=ReadScore(stu);
cout<<"==============================================="<<endl;
GetSum(stu,a);
for(int i=0;i<a;i++)
{
cout.setf(ios::left);
cout<<"姓名"<<stu[i].NAME<<setw(5);
cout<<"数学"<<stu[i].MT<<setw(5);
cout<<"英语"<<stu[i].EN<<setw(5);
cout<<"物理"<<stu[i].PH<<endl;
}
cout<<"总人数:"<<a<<endl;

cout<<"==============================================="<<endl;
print_1(stu,a);
cout<<"==============================================="<<endl;
cout<<endl<<"请输入要查找的学号:";
find(stu,a);
cout<<endl;
return 0;
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top