按学生的序号输入 n 名学生的成绩,按照分数由高到低的顺序输出学生的名次、序号和成绩,要求成绩相同的学

请不要用指针做,用二维数组做,真心求教
2024-12-18 15:16:44
推荐回答(1个)
回答1:

#include
#include
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<<"名字"< cout<<"学号"< cout<<"数学"< cout<<"英语"< cout<<"物理"< cout< 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 {
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 {
if(stu[i].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<<"总成绩表:"< cout<<"排名"< cout<<"姓名"< cout<<"学号"< cout<<"总分"< cout<<"高数"< cout<<"英语"< cout<<"物理"< cout<<"平均分"<
for(int j=0;j {
cout.setf(ios::left);
cout< cout< cout< cout< cout< cout< cout< cout<
}
}
int find(student stu[],int n)
{
int a=0,b=0;
long num;
cin>>num;
for(int j=0;j {
if(num==stu[j].NUM)
{
b++;
a++;
}
}
if(b!=0)
{
cout.setf(ios::left);
cout<<"排名"< cout<<"姓名"< cout<<"学号"< cout<<"总分"< cout<<"高数"< cout<<"英语"< cout<<"物理"< cout<<"平均分"< }
for(int i=0;i {

if(num==stu[i].NUM)
{
cout.setf(ios::left);
cout< cout< cout< cout< cout< cout< cout< cout<
}
}
if(a==0)
{
cout<<"查无此人!请重新输入:";
return -1;
}

}
int main()
{
student stu[30];
float a;
a=ReadScore(stu);
cout<<"==============================================="< GetSum(stu,a);
for(int i=0;i {
cout.setf(ios::left);
cout<<"姓名"< cout<<"数学"< cout<<"英语"< cout<<"物理"< }
cout<<"总人数:"<
cout<<"==============================================="< print_1(stu,a);
cout<<"==============================================="< cout< find(stu,a);
cout< return 0;
}