列表

详情


BC93. 公务员面试

描述

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

输入描述

每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。

输出描述

每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。

示例1

输入:

99 45 78 67 72 88 60

输出:

73.00

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-06-03

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

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-03-05

//多组输入
#include <stdio.h>

int main()
{
	double score = 0.0;
	double sum = 0.0;
	double max = 0.0;
	double min = 100.0;
	int cnt = 0;

	while (scanf("%lf", &score) != EOF)
	{
		cnt++;
		sum += score;
		if (max < score)
		{
			max = score;
		}
		if (min > score)
		{
			min = score;
		}

		if (cnt == 7)
		{
			printf("%.2lf\n", (sum - max - min) / 5.0);
			//重置
			cnt = 0;
			max = 0.0;
			min = 100.0;
			sum = 0.0;
            score = 0.0;
		}
	}


	return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-01-06

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void sort(int* arr,int n)
{
	int i = 0;
	int j = 0;
	int temp = 0;
	for (i = 0; i < n - 1; i++)
	{
		for (j = 0; j < n - i - 1; j++)
		{
			if (*(arr+j) > *(arr+j+1))
			{
				temp = *(arr + j);
				*(arr + j) = *(arr + j + 1);
				*(arr + j + 1) = temp;
			}
		}
	}
}
int main()
{
	int arr[7] = { 0 };
	int n = 7;
	int i = 0;
	float sum = 0;
	float ave = 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)
	{
        sum = 0;
		sort(arr,n);
		for (i = 1; i < n - 1; i++)
		{
			sum += arr[i];
		}
		ave = sum / (n - 2);
		printf("%.2f\n", ave);
	}
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-07-26

#include<stdio.h>
int main()
{
    int a[7];
    while(scanf("%d %d %d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF)
    {
        int sum=0;
        int m=0,n=0;
        for(int i=0;i<7;i++)
        {
            if(a[i]<a[n])   
                n=i;
            if(a[i]>a[m])
                m=i;
        }
        for(int i=0;i<7;i++)
        {
            if(i!=m&&i!=n)
                sum+=a[i];
        }
        printf("%.2f\n",sum/5.0);
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-07-21

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

上一题