渴求输出总分最高学子的姓名、学号和总分

给定N个学子的主导音讯,蕴含学号(由5个数字组成的字符串卡塔尔、姓名(长度小于10的不分包空白字符的非空字符串卡塔尔国和3门课程的成就([0,100]区间内的整数卡塔 尔(英语:State of Qatar),必要输出总分最高学子的全名、学号和总分。

输入格式:

输入在少年老成行中付出正整数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 %dn", p[maxid].name, p[maxid].number, sum);
34     free(p);
35     return 0;
36 }

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website