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

#include 
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(maxarr[i])
            min=arr[i];
        }//判断最高最低分
        int sum=0;
        for(int i=0;i<7;i++)
        {
            if(arr[i]>min&&arr[i]

以上是题目代码

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

# include 
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);
    }
}

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

例如:

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

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

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

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

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

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

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

你可能感兴趣的:(c语言,学习)