原题链接:演讲大赛评分
解题思路:
没啥思路,就按照题目的描述去一步步地求解,编程就是这样,不要被问题字数的多少迷惑了你的双眼,题目本身一大坨,读完题目,我去,我得干这个、这个、还有那个,这么多的问题,从何做起啊!从何下手啊!
编程之前要看大局,但是编程的过程中要看步骤,把大问题分解成一个个的小步骤,我先干这个,再干这个,然后再去干这个,最后干这个,然后写代码时只盯着每一个小步骤,写这个步骤的代码,就不要去想其他步骤的事情,否则你只会越想越多,越想越乱,越想越难,按部就班,逐个击破之就OK。
注意事项:
最后计算平均分时,千万不能除7,要除5,因为7位评委,通过最高最低分已经少了两位了,老铁!
参考代码:
#include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h> struct grade { float grade[7];//7个评委的分数 char name[30];//选手的姓名 }; int main() { struct grade studentGrade; while (scanf("%f %f %f %f %f %f %f %s", &studentGrade.grade[0], &studentGrade.grade[1], &studentGrade.grade[2], &studentGrade.grade[3], &studentGrade.grade[4], &studentGrade.grade[5], &studentGrade.grade[6], studentGrade.name) != EOF) { //寻找最高、最低分 int max = 0, min = 6; for (int i = 0; i < 7; ++i) { if (studentGrade.grade[i] > studentGrade.grade[max]) { max =i; } if (studentGrade.grade[i] < studentGrade.grade[min]) { min = i; } } //去掉最高分、最低分 studentGrade.grade[max] = 0; studentGrade.grade[min] = 0; //计算总分 float averageGrade = 0.0; for (int j = 0; j < 7; ++j) { averageGrade += studentGrade.grade[j]; } //计算平均分 averageGrade /= 5;//一定要注意,少了两位评委,除得是5,可千万别除7 //输出结果 printf("%s %.2f\n", studentGrade.name, averageGrade); } return 0; }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复