每天坚持写几个C语言程序题,会有效提高程序编程能力。
今天的例题:
在歌星大赛里,有10个评委打分,分数从1到100,选手最终得分:去掉一个最高分和一个最低分,剩下的分数求平均值即为得分。
#include <stdio.h>
int main()
{
int i;
float max;
float min;
float sum;
float score;
float a[10] = {0};
printf("Please input ten scores:\n");
for(i = 0;i < 10;i ++)
{
scanf("%f",&a[i]);
}
max = a[0];
min = a[0];
for(i = 1,sum = a[0];i < 10;i ++)
{
if(max < a[i])
{
max = a[i];
}
if(min > a[i])
{
min = a[i];
}
sum = sum + a[i];
}
sum = sum - max -min;
score = sum / 8;
printf("score = %f\n",score);
return 0;
}
调试结果如下:
Please input ten scores:
90
99
98
98
98
98
98
98
98
98
score = 98.000000
思考拓展题:
在上述题目条件不变的情况下,同时对评委的评分进行裁判,即在10 位评委中找出最公平(即评分最接近平均分),和最不公平(即与平均分分差距最大)的评委。
程序如下:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
float max;
float min;
float sum;
float score;
float error;
int m;
int n;
float a[12] = {0};
printf("Please input ten scores:\n");
for(i = 0;i < 10;i ++)
{
scanf("%f",&a[i]);
}
max = a[0];
min = a[0];
for(i = 1,sum = a[0];i < 10;i ++)
{
if(max < a[i])
{
max = a[i];
}
if(min > a[i])
{
min = a[i];
}
sum = sum + a[i];
}
sum = sum - max - min;
score = sum / 8;
printf("score = %f\n",score);
error = fabs(score - a[0]);
for(i = 1;i < 10;i ++)
{
if(fabs(score - a[i]) > error)
{
m = i;
}
if(fabs(score - a[i]) < error)
{
n = i;
}
}
printf("第%d位评委的评分最不公平,评分为:%f\n",m + 1,a[m]);
printf("第%d位评委的评分最公平,评分为:%f\n",n + 1,a[n]);
return 0;
}
调试结果为:
Please input ten scores:
98
96
95
90
99
89
94
92
90
98
score = 94.125000
第9位评委的评分最不公平,评分为:90.000000
第8位评委的评分最公平,评分为:92.000000