一.题目大概:
某次校园歌唱比赛,有10位评委打分,打分规则是:去掉一个最低分,去掉一个最高分,剩下的8个分数之平均分就是该选手的分数。
二.算法分析:
1.第一种:
(1)定义一个浮点型数组score,以及三个浮点型变量max、min、sum。
(2)利用一个for循环语句将10次的分数输入到数组中,并同时给max、min赋予第一次的值(方便后面的取最大值与最小值)。
(3)再利用一个for循环语句,对这十次分数取最大值与最小值(用两个if语句来实现),同时将这十次的分数的和给求出。
(4)利用printf语句将最大值与最小值打印出来,以及将(sum-max-min)/8这个公式计算并打印结构出来。
2.第二种:
(1)定义四个浮点型变量score、max、min、sum(初始化为0)。
(2)利用一个for循环语句,将十次成绩输入进来(如果i为1,说明是第一次输入成绩,则给min、max赋予初值,如果不是,则进行比较,然后取最大值与最小值)。
(3)在循环中进行求和,求sum。
(4)利用printf语句将最大值与最小值打印出来,以及将(sum-max-min)/8这个公式计算并打印结构出来。
三.代码实现:
(1)第一种:
#include<stdio.h>
int main()
{
float score[10];
float max,min,sum=0;
printf("请输入十次评分:");
for(int i=0;i<10;i++)
{
scanf("%f",score+i);
if(i==0)
max=min=score[i];
}
for(int i=0;i<10;i++)
{
if(max<score[i])
max=score[i];
if(min>score[i])
min=score[i];
sum+=score[i];
}
printf("最大分数为%.2f\n",max);
printf("最小分数为%.2f\n",min);
printf("最终分数为%.2f\n",(sum-max-min)/8);
return 0;
}
(2)第二种:
#include<stdio.h>
int main()
{
float score,min,max,sum=0;
printf("请输入十次评分:");
for(int i=1;i<=10;i++)
{
scanf("%f",&score);
if(i==1)
max=min=score;
else
{
if(max<score)
max=score;
if(min>score)
min=score;
}
sum+=score;
}
printf("最佳成绩为:%.2f\n",max);
printf("最差成绩为:%.2f\n",min);
printf("最终成绩为:%.2f\n",(sum-max-min)/8);
return 0;
}