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