#include<iostream>
#include<string>
using namespace std;
typedef struct
{
float english;
float math;
float politic;
}Score;
typedef struct
aa
{
string name;
string num;
Score score;
aa *next;
}stu;
stu *finput()
{
stu *head,*q;
head=new stu;
head->next=NULL;
q=new stu;
int a=1;
while(a==1){
cout<<"请依次输入学生的姓名、学号:";
cin>>q->name>>q->num;
cout<<"请依次输入该生的英语、数学、政治分数:";
cin>>q->score.english;
cin>>q->score.math>>q->score.politic;
q->next=head->next;
head->next=q;
cout<<"是否继续输入学生数据yes-1,no-0:"<<endl;
int a;
cin>>a;
if(a==1)
q=new stu;
else break;
}
return head;
}
void show_max(stu *head)
{
stu *p,*q;
p=head->next ;
float max_english,max_math,max_politic;
max_english=p->score.english ;
max_math=p->score.math;
max_politic=p->score.politic;
p=p->next ;
while(p!=NULL)
{
if(p->score .english>max_english)
{
max_english=p->score.english;
q=p;
p=p->next;
}
else p=p->next ;
}
cout<<"英语成绩最高的同学为:"<<endl;
cout<<q->name<<q->num;
}
int main()
{
stu *head;
head=finput();
show_max(head);
return 0;
}
时间有限,现在我只写了一个求输出英语成绩最高的,你再照原样改改就可以完成!这是利用链表做的,不必知道总的人数!