在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉
一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。题目条件不变,
但考虑同时对评委评分进行裁判,即在10个评委中找出最公平和最不公平…
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉
一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
*问题分析与算法设计
这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
*程序说明与注释
#include
#include
int main(){
int a[10]={0};
int i,max,min;
double sum=0;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
max = a[0]>a[1]?a[0]:a[1];
min = a[0]<=a[1]?a[0]:a[1];
for (i=0;i<10;i++){
sum += a[i];
if (max
if (min>a[i]) min = a[i];
}
sum = (sum - max - min)/8;
printf("the average score is %f :/n",sum);
printf("the max score is %d :/n the min score is %d :/n",max,min);
return 0;
}
*思考题
题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接
返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?
#include
#include
int main(){
int a[10]={0};
int i,max,min,uu,umax;
double sum=0,umin;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
max = a[0]>a[1]?a[0]:a[1];
min = a[0]<=a[1]?a[0]:a[1];
for (i=0;i<10;i++){
sum += a[i];
if (max
if (min>a[i]) min = a[i];
}
sum = (sum - max - min)/8;
umax = (max-sum)>(sum-min)?max:min;
umin = abs(a[0]-sum);
uu = a[0];
for (i=1;i<10;i++){
if (umin>abs(a[i]-sum)) {
umin = abs(a[i]-sum);
uu = a[i];
}
}
printf("the average score is %f :/n",sum);
printf("the max score is %d :/n the min score is %d :/n",max,min);
printf("the umax score is %d :/n the umin score is %d :/n",umax,uu);
return 0;
}