7-66 找出總分最高的學生(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

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef struct _info {
 5     char number[6];
 6     char name[11];
 7     int score[3];
 8 } Info;
 9 
10 int main(int argc, char const *argv[])
11 {
12     int n;
13     Info *p = NULL;
14 
15     scanf("%d", &n);
16 
17     p = (Info*)malloc(sizeof(Info)*n);
18 
19     for ( int i = 0; i < n; i++ ) {
20         scanf("%s %s %d %d %d", 
21             p[i].number, p[i].name, &p[i].score[0], &p[i].score[1], &p[i].score[2]);
22     }
23     int maxid = 0;
24     for ( int i = 1; i < n; i++ ) {
25         int sum1, sum2;
26         sum1 = p[i].score[0] + p[i].score[1] + p[i].score[2];
27         sum2 = p[maxid].score[0] + p[maxid].score[1] + p[maxid].score[2];
28         if ( sum1 > sum2 ) {
29             maxid = i;
30         }
31     }
32     int sum = p[maxid].score[0] + p[maxid].score[1] + p[maxid].score[2];
33     printf("%s %s %d\n", p[maxid].name, p[maxid].number, sum);
34     free(p);
35     return 0;
36 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM