杭电acm2014青年歌手大奖赛_评委会打分

C语言 码拜 5年前 (2016-04-27) 499次浏览
Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。

Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。

Sample Input
3 99 98 97
4 100 99 98 97

Sample Output
98.00
98.50
[code=c]#include<stdio.h>
#include<stdlib.h>
int main(){
int i,n,temp;
float s;
int *p;
while(~scanf(“%d”,&n))
{
s=0;
p=malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf(“%d”,p+i);
if(*(p+i)<*(p+i-1))
{
temp=*(p+i);
*(p+i)=*(p+i-1);
*(p+i-1)=temp;
}
}
for(i=n-1;i>=0;i–)
{
if(*(p+i)>*(p+i+1))
{
temp=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=temp;
}
}
for(i=1;i<n-1;i++)
s+=*(p+i);
printf(“%.2f\n”,(float)s/(n-2));
}
return 0;
}[/code=c]
不知道为什么就是不能ac,请指点

解决方案

20

malloc返回的是void *
所以需要转换成需要的指针类型,假设你要存两个数,那么malloc(2*sizeof(int))返回的是void *类型的8个字节的内存空间的首地址
返回的是首地址啊。当然用int *接收

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明杭电acm2014青年歌手大奖赛_评委会打分
喜欢 (0)
[1034331897@qq.com]
分享 (0)