C语言编程题,求助大佬,谢谢!

题目内容:大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉1个最高分和1个最... 题目内容:
大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉1个最高分和1个最低分后,取平均分作为该选手的最后得分。要求编程实现根据n个选手的最后得分。
输入格式:
输入选手数目n,评委人数m,数据间隔一个空格;
从第2行起,输入每位选手的m个得分后换行,数据间隔一个空格。
输出格式:
每行输出一个选手的m个得分,以及该选手的最后得分(最后得分保留两位小数),数据间一个空格间隔,注意行尾无空格。
输入样例:
5 6
7 8 7 7 8 9
7 7 7 9 8 7
8 8 8 9 8 9
7 8 7 7 6 7
9 9 9 9 10 9
输出样例:
7 8 7 7 8 9 7.50
7 7 7 9 8 7 7.25
8 8 8 9 8 9 8.25
7 8 7 7 6 7 7.00
9 9 9 9 10 9 9.00
展开
 我来答
White_MouseYBZ
2019-06-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6281万
展开全部

#include "stdio.h"

#include <stdlib.h>

int main(int argc,char *argv[]){

int **p,*q,i,j,h,l,n,m;

printf("Please enter n & m(int n>1,m>2)...\n");

if(scanf("%d%d",&n,&m)!=2 || n<1 || m<2){

printf("Input error, exit...\n");

return 0;

}

q=(int *)malloc(sizeof(int)*(m+1)*n);

if(!q || (p=(int **)malloc(sizeof(int *)*n))==NULL){

printf("Application memory faiture, exit...\n");

return 0;

}

for(p[0]=q,i=1;i<n;p[i++]=p[i-1]+m+1);//组织成二维数组

printf("Please enter the score of %d players...\n",n);

for(i=0;i<n;i++){

for(l=10,h=p[i][m]=j=0;j<m;j++)

if(scanf("%d",p[i]+j)==1 && p[i][j]>=0){

p[i][m]+=p[i][j];//统计总分

if(p[i][j]<l)//求最低分

l=p[i][j];

if(p[i][j]>h)//求最高分

h=p[i][j];

}

else{

fflush(stdin);

j--;

}

p[i][m]-=(h+l);//减去最高分和最低分

}

printf("\n");

for(i=0;i<n;i++){

for(j=0;j<m;printf("%d ",p[i][j++]));

printf("%.2f\n",p[i][m]/(m-2.0));

}

free(p);

free(q);

return 0;

}

代码图片和运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式