定义一个结构体数组,存放指定数目个学生的学号,姓名,语文,数学课的成绩及总分

2. 从键盘输入指定数目个学生的以上内容
3. 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
4. 输出两门课程的总分最高的学生的学号、姓名及其总分
5. 将指定数目个学生按照总分从低到高进行排序,输出结果,格式如下所示:
number name math Chinese total
101 Alice 90 75 165
103 Tom 90 87 177
最新回答
唇角那吻痕

2024-04-24 13:29:05

弄过类似的

稍改如下:

参考:

#include<iostream>

using namespace std;

struct student

{

int number;

char name[10];

float score[2];

float total;

};

void Total(student s[],int n)

{

 int  i;

 for( i=0;i<n;i++)

s[i].total=(s[i].score[0]+s[i].score[1]+s[i].score[2]);

}

void smax(student s[],int n)

{

 int i;

 float max0 = s[0].score[0];

 float max1 = s[0].score[1];

for( i=1;i<n;i++)

{

if(s[i].score[0]>max0) max0 = s[i].score[0];

if(s[i].score[1]>max1) max1 = s[i].score[1];

}

cout<<"语文最高分为:\n";

for( i=0;i<n;i++)

if(s[i].score[0] == max0)

cout<<s[i].number<<" \t"<<s[i].name<<"\t"<<s[i].score[0]<<"\t"<<s[i].score[1]<<"\t"<<s[i].total<<endl;

cout<<"数学最高分为:\n";

for( i=0;i<n;i++)

if(s[i].score[1] == max1)

cout<<s[i].number<<" \t"<<s[i].name<<"\t"<<s[i].score[0]<<"\t"<<s[i].score[1]<<"\t"<<s[i].total<<endl;

}

void order(student s[],int n)

{

int i,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(s[i].total>s[j].total)

{

student temper;

temper=s[i];

s[i]=s[j];

s[j]=temper;

}

cout<<"总分最高的为:\n";

cout<<s[n-1].number<<" \t"<<s[n-1].name<<"\t"<<s[n-1].score[0]<<"\t"<<s[n-1].score[1]<<"\t"<<s[n-1].total<<endl;

cout<<"the order of the score is:"<<endl;

cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"语文"<<"\t"<<"数学"<<"\t"<<"总成绩"<<endl;

for( i=0;i<n;i++)

cout<<s[i].number<<" \t"<<s[i].name<<"\t"<<s[i].score[0]<<"\t"<<s[i].score[1]<<"\t"<<s[i].total<<endl;

}

int main()

{

int i;

student s[100];

cout<<"enter the numer name and the score of course:"<<endl;

for( i=0;i<100;i++)

{

cin>>s[i].number>>s[i].name>>s[i].score[0]>>s[i].score[1];

if(s[i].number == 0)

break;

}

Total(s,i);//求总分

smax(s,i);//单科最高分

order(s,i);//排序并输出两科最高分

return 0;

}

独我暖阳

2024-04-24 07:16:43

用EXCEL,这个程序很好用。