#include?<conio.h>
#define?ARR_LEN?255?/*數組長度上限*/
#define?elemType?float?/*元素類型*/
/*?冒泡排序?*/
/*?1.?從當前元素起,向後依次比較每壹對相鄰元素,若逆序則交換?*/
/*?2.?對所有元素均重復以上步驟,直至最後壹個元素?*/
/*?elemType?arr[]:?排序目標數組;?int?len:?元素個數?*/
void?bubbleSort?(elemType?arr[],?int?len)?{
elemType?temp;
int?i,?j;
for?(i=0;?i<len-1;?i++)?/*?外循環為排序趟數,len個數進行len-1趟?*/
for?(j=0;?j<len-1-i;?j++)?{?/*?內循環為每趟比較的次數,第i趟比較len-i次?*/
if?(arr[j]?>?arr[j+1])?{?/*?相鄰元素比較,若逆序則交換(升序為左大於右,逆序反之)?*/
temp?=?arr[j];
arr[j]?=?arr[j+1];
arr[j+1]?=?temp;
}
}
}
/*?輸入數組?*/
/*?arr[]:?輸入目標數組;?len:?元素個數?*/
void?inputArray?(elemType?arr[],?int?len)?{
int?i;
for?(i=0;?i<len;?i++)
scanf?("%f",?&arr[i]);
putchar?('\n');
}
/*?打印數組內容?*/
/*?arr[]:?打印目標數組;?len:?元素個數?*/
void?printArray?(elemType?arr[],?int?len)?{
int?i;
for?(i=0;?i<len;?i++)
printf?("%.1f\t",?arr[i]);
putchar?('\n');
}
/*?去掉壹個最高分,去掉壹個最低分,然後求平均分?*/
/*?arr[]:?目標數組;?len:?元素個數?*/
void?calcArray?(elemType?arr[],?int?len,?elemType?*max,?elemType?*min,?float?*avg)?{
int?i;
elemType?sum;?
bubbleSort?(arr,?len);?/*?對數組排序,此後首、尾兩元素即待被去掉的壹個最高分、壹個最低分?*/
*max?=?arr[len-2];
*min?=?arr[1];
sum?=?*avg?=?0;
for?(i=1;?i<len-1;?i++)
sum?+=?arr[i];
*avg?=?sum?/?(len-2);
}
int?main?(void)?{
//elemType?score[ARR_LEN];?/*?成績數組?*/
elemType?score[ARR_LEN]?=?{95.0,88.0,72.0,96.0,74.0};
int?len?=?5;?/*?5名評委?*/
elemType?max,?min,?avg;?/*?最高分、最低分、平均分?*/
int?i;
//printf?("輸入%d名評委打分:\n",?len);
//inputArray?(score,?len);
printf?("%d名評委打分:\t",?len);
printArray?(score,?len);
calcArray?(score,?len,?&max,?&min,?&avg);
printf?("去掉壹個最高分:\t%.1f分\n去掉壹個最低分:\t%.1f分\n此名選手最終得分:\t%.1f分",?max,?min,?avg);
getch?();?/*屏幕暫留*/
return?0;
}