问题及代码
/*
烟台大学计算机与控制工程学院
文件名称: 大奖赛计分
作 者:展一
完成时间:2016年10月27日
题目描述
在歌手大奖赛中,有9位评委为参赛的选手打分,分数为0~10分。
选手最后得分为:去掉一个最高分和一个最低分后,取其余7个分数的平均值。
请编写一个程序实现这个程序。
输入
9位评委给选手找的分,9个0-10之间的小数。小数点后保留3位
输出
选手的最后得分,即9个成绩中去掉一个最高,去掉一个最低后的平均成绩。结果输出中,保留3位小数。
样例输入
9.8 6.7 8.9 7.6 4.5 6.5 7.8 4.2 6.4
样例输出
6.914
*/
#include <stdio.h>
int main()
{
int i=1;
double x,average, sum, max, min;
max=-11;
min=11;
sum=0;
for(i=1;i<=9;i++)
{ scanf("%lf", &x);
sum=sum+x;
if(max<x)
max=x;
if(min>x)
min=x;
}
average = (sum-max-min)/7;
printf("%.3f\n", average);
return 0;
}
运行结果
知识点总结
循环结构的实用。
为了保证去掉的是最高分和最低分,先确定一个比所有值都小的变量max,以及一个比所有值都大的变量min,然后进入循环,将一个个输入的分数与上一次循环赋值的max与min比较大小,从而得出最大值和最小值;每次循环都要进行求和,最后退出循环后减去max和min再/7便是平均值。
学习心得
第一遍做的时候使用的笨办法,输入九个数然后比较大小,结果自然是超出了字符数。询问大神后才得到这种简便方法。