花露水和暖壶


私信TA

用户名:MichaelMeng

访问量:9979

签 名:

等  级
排  名 86
经  验 9293
参赛次数 0
文章发表 28
年  龄 0
在职情况 学生
学  校 烟台大学
专  业

  自我简介:

不喜欢摇滚乐的研究生不是好程序猿!

解题思路: 

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

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

3 人评分

  评论区

  • «
  • »