一、题目
有10个裁判评分,去除最高分和最低分,求运动员的平均分。
如图:
?
二、思路分析
1、设置一个数组变量,用冒泡排序法排序
2、数组的首位和最后一位,就是最低分和最高分
3、数组的第二到n-1个,就是符合要求的分数
?
三、代码截图【带注释】
?
四、源代码【带注释】
#include <stdio.h>
#define N 10//定义常数iconN
//输入10个分数,去除最低分和最高分,求平均值
//思路分析:
//1、设置一个数组变量,用冒泡排序法排序
//2、数组的首位和最后一位,就是最低分和最高分
//3、数组的第二到n-1个,就是符合要求的分数
void sort(int[]);//定义排序函数
void aver(int[]);//定义求平均值函数
int main()
{
? ? int arricon[N];
? ? printf("请输入%d个分数。\n\n",N);
? ? for(int i=0; i<N; i++)
? ? {
? ? ? ? printf("第%d个:",i+1);
? ? ? ? scanf("%d",&arr[i]);
? ? }
? ? sort(arr);
? ? aver(arr);
}
//用冒泡排序法排序
void sort(int arr[])
{
? ? int temp=0;
? ? for(int i=0; i<N-1; i++)
? ? {
? ? ? ? for(int j=0; j<N-i-1; j++)
? ? ? ? {
? ? ? ? ? ? if(arr[j]<arr[j+1])
? ? ? ? ? ? {
? ? ? ? ? ? ? ? temp=arr[j+1];
? ? ? ? ? ? ? ? arr[j+1]=arr[j];
? ? ? ? ? ? ? ? arr[j]=temp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
//从第二位到N-1位的分数,就是要求的分数
aver(int arr[])
{
? ? int sum=0;
? ? //求第二位循环到N-1位的分数和
? ? for(int i=1; i<N-1; i++)
? ? {
? ? ? ? sum=sum+arr[i];
? ? }
? ? printf("\n去掉\n最高分:%d",arr[0]);
? ? printf("\n最低分:%d\n",arr[N-1]);
? ? printf("\n\n%d个分数的平均分是:%.2f",
? ? ? ? ? ?N-2,(float)sum/(N-2));
}
?
五、运行结果
?
关注我,每天分享编程知识