7-2 找出總分最高的學生 (15 分)
給定N個學生的基本信息,包括學號(由5個數字組成的字符串)、姓名(長度小於10的不包含空白字符的非空字符串)和3門課程的成績([0,100]區間內的整數),要求輸出總分最高學生的姓名、學號和總分。
輸入格式:
輸入在一行中給出正整數N(≤10)。隨後N行,每行給出一位學生的信息,格式爲“學號 姓名 成績1 成績2 成績3”,中間以空格分隔。
輸出格式:
在一行中輸出總分最高學生的姓名、學號和總分,間隔一個空格。題目保證這樣的學生是唯一的。
輸入樣例:
5
00001 huanglan 78 83 75
00002 wanghai 76 80 77
00003 shenqiang 87 83 76
10001 zhangfeng 92 88 78
21987 zhangmeng 80 82 75
輸出樣例:
zhangfeng 10001 258
代碼:
#include <stdio.h>
#include <string.h>
struct stu
{
char nu[1000];
char name[1000];
int pr1;
int pr2;
int pr3;
};
int main() {
struct stu stu1[1000];
int N;
scanf("%d", &N);
int lo;
for (int i = 0; i < N; i++)
{
scanf("%s %s %d %d %d", &stu1[i].nu, &stu1[i].name, &stu1[i].pr1, &stu1[i].pr2, &stu1[i].pr3);
}
int max = stu1[0].pr1 + stu1[0].pr2 + stu1[0].pr3;
for (int i = 1; i < N; i++)
{
if (max < stu1[i].pr1 + stu1[i].pr2 + stu1[i].pr3)
{
max = stu1[i].pr1 + stu1[i].pr2 + stu1[i].pr3;
lo = i;
}
}
printf("%s %s %d", stu1[lo].name, stu1[lo].nu, max);
}