描述:
公务员面试现场打分。有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;
}