【C语言】BC93公务员面试(DAY 7)

文章目录

    • 原题题目
    • 代码实现
    • 重点分析

原题题目

题目传送门
【C语言】BC93公务员面试(DAY 7)_第1张图片

代码实现

#include
int main()
{
    int arr[7];
    while (scanf("%d%d%d%d%d%d%d",arr,arr+1,arr+2,arr+3,arr+4,arr+5,arr+6)!=EOF)
    {
        float sum=arr[0];
        int max=arr[0];
        int min=arr[0];
        for (int i=1;i<7;i++)
        {
            if(arr[i]>max)
            {
                max=arr[i];
            }
            else if(arr[i]<min)
            {
                min=arr[i];
            }
            sum+=arr[i];
        }
        printf("%.2f\n",(sum-max-min)/5.0);
    }
    return 0;
}

重点分析

输入描述是输入多个数据时,这种题一般采用数组的形式。
可以先初始化一个数组,因为已经知道了7个整数,所以不妨int arr[7]
随后就是while(scanf("")!EOF) 也就是一直输入,直到用户输入完自己想要输入的数据。 arr代表数组的首地址,arr+1就是紧挨着arr的数组地址,以此类推。
随后在这个while循环中,定义了float sum=0; 用来求最后的和。 int max=arr[0]; int min=arr[0];初始化最大最小值,都必须先等于数组的首地址表示的值。如果不是这样做,假如我们简单的将他们初始化为0,那么最小值也就是0了,不会再做更多的运算得到数组中的最小值。
随后就用到了常见的数组中比较大小的方法,这个方法,包括while scanf!=EOF在我前面记录的刷题文章中也多次提到,大家多写一写题就能领悟了。
我们先写一个for循环,for(int =1;i<7;i++) if arr[i]>max max=arr[i]这里我就不在乎格式了,为了方便表达意思。个人觉得arr[i]这样的表示实在是妙啊!可以根据i的值加加减减,从而控制数组里面存储的变量(操控数组的地址,其实存在内存里的数都是存在了一个地址里面)。
这样比较完成后就能得到我们想要的最大最小值了。
随后再sum+=arr[i]这一步一定要写在for循环最后一步,出了for循环既不能将所有值加在一起了,也就是不在for循环的作用域里面了。
随后再2打印sum的值时再用sum-max-min再除以5.0 就得到了正确答案。

你可能感兴趣的:(C语言,#,C语言刷题,c语言,算法,数据结构,开发语言)