7-66 找出总分最高的学生(15 分)
2018-12-04 07:12:12来源:博客园 阅读 ()
给定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 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:网络通讯中 bind函数的作用
- 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的 2020-04-15
- 剑指offer28:找出数组中超过一半的数字。 2019-08-27
- 用C语言协助办公_01 找出所有不对劲的人 2018-06-18
- 【USACO】DP动态规划小测(一) 2018-06-17
- 面试题---找出数组中两个只出现一次的数 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash