【问题描述】
当前许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是整数,评委人数大于等于5,小于等于50),去掉两个最高分和两个最低分,计算并输出平均得分(小数点后保留两位有效数字)。
【输入形式】
从控制台输入评委人数,然后在下一行输入评委的打分(以一个空格分隔的整数)。
【输出形式】
在标准输出上输出平均得分(小数点后保留两位有效数字)。
【输入样例】
15
90 98 99 100 92 97 98 95 91 90 100 92 93 98 90
【输出样例】
94.82
#include<stdio.h>
char* Create(int j)
{
int i;
j = 0;
char a[100];
char* c;
for (i = 0; i < 100; i++)
{
scanf_s("%c", &a[i], 1);
if (a[i] == '!')
{
j = i;
break;
}
}
c = a;
return c;
}
int* find(char* c,int j)
{
int num, num1, flag, flag1,i,b[2];
int* d;
num = 1;
num1 = num;
flag1 = 0;
for (i = 0; i < j; i++)
{
flag = i;
num = 1;
while (*c== *(c+1) && i + 1 < j)
{
num++;
i++;
c++;
}
if (num1 < num)
{
flag1 = flag;
num1 = num;
}
}
b[0] = flag1;
b[1] = num1;
d = b;
return b;
}
void print_array(int* d, char* c)
{
int i;
if (*d == 1)
{
printf("no");
}
else if (*d!= 0)
{
for (i = *d; i < *d+*(d+1); i++)
{
printf("%c",*(c+i));
}
}
}
int main()
{
int j;
j = 0;
char *a= Create(j);
int *b= find(a,j);
print_array(b, a);
return 0;
}