牛客网BC93 公务员面试

发布时间:2024年01月12日

描述:

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

输入描述:

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

输出描述:

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

示例:

输入99 45 78 67 72 88 60
输出73.00

思路:可以创建一个数组然后输入数据,用冒泡对数据进行排列,根据数组下标去掉一个最大值和一个最小值,求和然后求平均值。

#include <stdio.h>

int main() {
    int arr[7] = {0};
    int i, sum;
    while (1) {
        sum = 0;
//输入
        for (i = 0; i < 7; i++)
            scanf("%d", &arr[i]);
//冒泡
        for (i = 0; i < 7 - 1; i++) {
            int j = 0;
            for (j = 0; j < 7 - 1 - i; j++) {
                if (arr[j + 1] > arr[j]) {
                    int tem = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = tem;
                }
            }
        }
//去掉最大和最小值
        float ave = 0;
        for (i = 1; i < 7 - 1; i++) {
            sum += arr[i];
        }
        ave = sum / 5.0;
        printf("%.2f\n", ave);
        break;
    }
    return 0;
}

如果要求多组输入的话,可以用scanf依次读取并判断最大值和最小值,还可以同时求和,减去最大值和最小值就行了。然后重置一下变量就又可以进行下一轮了。

#include <stdio.h>

int main()
{
	int a, max = 0, small = 100, sum = 0, count = 0;
	while (scanf("%d", &a) != EOF)
	{
		if (a > max)//判定最高分
		{
			max = a;
		}
		if (a < small)//判定最低分
		{
			small = a;
		}
		sum += a;
		count++;//计数器
		if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
		{
			printf("%.2f\n", (sum - max - small) / 5.0);
			count = 0;//重置
			max = 0;//重置
			small = 100;//重置
			sum = 0;//重置
		}	
	}

	return 0;
}

文章来源:https://blog.csdn.net/2303_80078385/article/details/135536644
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。