给定N名学生的学号,姓名以及三门课的成绩,比较并输出总分最高的一名学生的学号,姓名及总分(总分最高的学生是唯一的)。
首先输入N的数值,确定有几名学生。随后N行,按照“学号 姓名 成绩1 成绩2 成绩3”的格式输入。
源代码
#include<stdio.h>
struct student
{
int num;
char name[10];
int score1;
int score2;
int score3;
int sum;
};
struct student s(struct student stu[],int N);
struct student find(struct student stu[],int N);
int main()
{
int N;
scanf("%d",&N);
struct student stu[N];
int i;
for(i = 0;i < N;i++)
{
scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].score1,&stu[i].score2,&stu[i].score3);
}
s(stu,N);
find(stu,N);
return 0;
}
struct student s(struct student stu[],int N)
{
int i;
for(i = 0;i < N;i++)
{
stu[i].sum = stu[i].score1 + stu[i].score2 + stu[i].score3;
}
}
struct student find(struct student stu[],int N)
{
int i;
struct student max;
max = stu[0];
for(i = 1;i < N;i++)
{
if(max.sum < stu[i].sum) max = stu[i];
}
printf("%s %03d %d",max.name,max.num,max.sum);
}