题目内容:
大奖赛现场统分。已知某大奖赛有n个()选手参赛,m()个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉1个最高分和1个最低分后,取平均分作为该选手的最后得分。要求编程实现根据n个选手的最后得分。
输入格式:
输入选手数目n,评委人数m,数据间隔一个空格;
从第2行起,输入每位选手的m个得分后换行,数据间隔一个空格。
输出格式:
每行输出一个选手的m个得分,以及该选手的最后得分(最后得分保留两位小数),数据间一个空格间隔,注意行尾无空格。
输入样例:
4 6
7.8 8.0 7.5 7.9 8.2 9.0
7.6 7.2 7.5 8.6 8.2 8.0
8.5 8.6 8.3 9.1 8.9 9.0
7.8 8.2 7.7 7.5 6.9 7.2
输出样例:
7.80 8.00 7.50 7.90 8.20 9.00 7.97
7.60 7.20 7.50 8.60 8.20 8.00 7.82
8.50 8.60 8.30 9.10 8.90 9.00 8.75
7.80 8.20 7.70 7.50 6.90 7.20 7.55
时间限制:500ms内存限制:32000kb
#include <stdio.h>
int main()
{
int n , m , i , j ;
scanf( "%d %d" , &n , &m ) ;
float a[ 10 ][ 10 ] , sum[ 10 ] = { 0 } , max , min ;//别用double,这里double过不了
for( i = 0 ; i < n ; i++ )
for( j = 0 ; j < m ; j++ )
scanf( "%f" , &a[ i ][ j ] ) ;
for( i = 0 ; i < n ; i++ )
{
max = min = a[ i ][ 0 ] ;
for( j = 0 ; j < m ; j++ )
{
sum[ i ] += a[ i ][ j ] ;
if( a[ i ][ j ] > max ) max = a[ i ][ j ] ;
if( a[ i ][ j ] < min ) min = a[ i ][ j ] ;
printf( "%.2f " , a[ i ][ j ] ) ;
}
sum[ i ] = ( sum[ i ] - max - min ) / ( m - 2 ) ;
printf( "%.2f\n" , sum[ i ] ) ;
}
return 0 ;
}