解题思路: 

    没啥思路,就按照题目的描述去一步步地求解,编程就是这样,不要被问题字数的多少迷惑了你的双眼,题目本身一大坨,读完题目,我去,我得干这个、这个、还有那个,这么多的问题,从何做起啊!从何下手啊!

    编程之前要看大局,但是编程的过程中要看步骤,把大问题分解成一个个的小步骤,我先干这个,再干这个,然后再去干这个,最后干这个,然后写代码时只盯着每一个小步骤,写这个步骤的代码,就不要去想其他步骤的事情,否则你只会越想越多,越想越乱,越想越难,按部就班,逐个击破之就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.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论