题目:
大考过后,各科老师都想知道自己的课程,谁考得最高。可是面对海量的数据,老师再次选择求助于你。
Input
先输入一个整数n,表示有n个学生。(0 < n < 3000)
接下来n行,每行有四个数据,分别代表学号、语文成绩、数学成绩和英语成绩。
最后输入一个整数t,其中t=1表示语文老师,t=2表示数学老师,t=3表示英语老师。
Output
根据t的取值输出对应任课教师的课程分数最高的学生信息,即符合条件的学生的学号及所有成绩。有多个学生该课程成绩相同的,则按照学号的升序一同输出这些学生信息。
Sample Input
4
1023 88 75 65
1033 99 59 70
1187 77 86 83
1054 64 86 92
1
Sample Output
1033 99 59 70
=============================
如何做到“有多个学生该课程成绩相同的,则按照学号的升序一同输出这些学生信息。”
=============================
我的答案:
#include<stdio.h>
struct data
{
char num;
int a;
int b;
int c;
};
void main()
{
data s[3000];
int i,n,m;
int t;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%c",&s[i].num);
scanf("%d",&s[i].a);
scanf("%d",&s[i].b);
scanf("%d",&s[i].c);
}
scanf("%d",&t);
if(t==1)
{m=s[0].a;
for(i=0;i<n;i++)
{
if(s[i].a>=m)
m=s[i].a;
}
for(i=0;i<n;i++)
{
if(s[i].a==m)
printf("%d %d %d %d\n",s[i].num,s[i].a,s[i].b,s[i].c);
}
}
if(t==2)
{m=s[0].b;
for(i=0;i<n;i++)
{
if(s[i].b>=m)
m=s[i].b;
}
for(i=0;i<n;i++)
{
if(s[i].b==m)
printf("%d %d %d %d\n",s[i].num,s[i].a,s[i].b,s[i].c);
}
}
if(t==3)
{m=s[0].c;
for(i=0;i<n;i++)
{
if(s[i].c>=m)
m=s[i].c;
}
for(i=0;i<n;i++)
{
if(s[i].c==m)
printf("%d %d %d %d\n",s[i].num,s[i].a,s[i].b,s[i].c);
}
}
}
求具体代码
追答都给你说那么仔细了,也不先尝试一下。弄好了,但说字数超了,你也没有私信,看怎么弄给你。光写我加的部分肯定没有超,但你的代码有错,是连改错的全部,所以才超了。