公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。

#include <stdio.h>
int main() {
    int arr[7]={0};
    //int count=0;这样就错了
    while(scanf("%d %d %d %d %d %d %d",&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6])!=EOF)
    {
        int count=0;//注意放在大循环里面初始化,不然影响后面输出结果
        int max=arr[0];
        int min=arr[0];
        for(int i=0;i<7;i++)
        {
            if(max<arr[i])
            max=arr[i];
            if(min>arr[i])
            min=arr[i];
        }//判断最高最低分
        int sum=0;
        for(int i=0;i<7;i++)
        {
            if(arr[i]>min&&arr[i]<max)//去除最高分和最低分
                {
                    sum+=arr[i];
                    count++;//计算有几个有效数据
                }
        }
        if(count==0)
            printf("%d",arr[0]);//如果数据全部一样,打印第一个数据
        else
            printf("%.2f\n",(float)sum/count);//强制类型转换
    }
    return 0;
}

以上是题目代码

想比于直接用加和除以5.0的代码

# include <stdio.h>
int main(void) {
    int arr[7] = {0};
    while (scanf("%d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3],
                 &arr[4], &arr[5], &arr[6]) != EOF) {
        int min = arr[0];
        int max = arr[0];
        for (int i = 0; i < 7; i++) { // 遍历数组
            if (arr[i] > max)  // 最高分
                max = arr[i];
            if (arr[i] < min)  // 最低分
                min = arr[i];
        }
        int sum = 0;
        for (int i = 0; i < 7; i++) { // 遍历数组
            if (arr[i] < max && arr[i] > min)
                sum += arr[i];
        }
        printf("%.2f\n",(float) sum / 5);
    }
}

代码优化了出现多个最大最小值的情况,

例如:

以及当输入数据全是相同一个数时出现的bug

同时在优化代码的同时,将count初始化放在了while循环外面,当多组输入时,count的值在第二组输入时发生改变,以至于结果错误。

所以养成好的编程习惯,有助于减少代码的bug。

以上是我对于这题的理解与消化。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 12:22:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 12:22:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 12:22:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 12:22:01       20 阅读

热门阅读

  1. day36WEB攻防-通用漏洞&XSS 跨站&MXSS&UXSS&FlashXSS&PDFXSS

    2024-02-01 12:22:01       37 阅读
  2. netlink学习

    2024-02-01 12:22:01       31 阅读
  3. SQL Server 函数参考手册(SQL Server 字符串函数)

    2024-02-01 12:22:01       31 阅读
  4. QuertWrapper and 和or 用法

    2024-02-01 12:22:01       35 阅读
  5. 私有云+云原生能力模型

    2024-02-01 12:22:01       33 阅读
  6. docker-compose部署开源培训系统playedu

    2024-02-01 12:22:01       32 阅读
  7. ArrayList和LinkedList 区别

    2024-02-01 12:22:01       32 阅读
  8. 【Android】屏幕锁

    2024-02-01 12:22:01       38 阅读
  9. C/C++编程-工程实践-MDK工具学习

    2024-02-01 12:22:01       35 阅读
  10. 学习前端之HTML5中的`<!DOCTYPE>`声明有什么意义

    2024-02-01 12:22:01       33 阅读
  11. pinia---状态管理工具

    2024-02-01 12:22:01       30 阅读
  12. 【AutoML】AutoKeras 训练数据收集并入库

    2024-02-01 12:22:01       37 阅读