您的位置:首页 > 其它

c程序基本算法百例之四—歌手大奖赛评分

2011-05-10 10:15 246 查看
#include<stdio.h>
#include<math.h>
int
main()
{
int integer,i,max,min,sum;
max = -32768;                           //先假设当前最大值为c语言整型数的最小值
min = 32767;                            //先假设当前最小值为c语言整型数的最大值
sum = 0;                                //要去累加和值得初值为0
for(i=1;i<=10;i++)
{
printf("Input number %d=",i);
scanf("%d",&integer);               //输入评委的评分
sum += integer;                     //计算总分
if(integer>max)max = integer;       //通过比较筛选出其中的最高分
if(integer<min)min = integer;       //通过比较筛选出其中的最低分
}
printf("canceled max score:%d/ncanceled min score:%d/n",max,min);
printf("Average score:%d/n",(sum-max-min)/8);   //输出结果
return 0;
}
/*
output:
-----------------------------------------------------------------------------
Input number 1=99
Input number 2=97
Input number 3=98
Input number 4=96
Input number 5=91
Input number 6=100
Input number 7=54
Input number 8=98
Input number 9=92
Input number 10=93
canceled max score:100
canceled min score:54
Average score:95
Process returned 0 (0x0)   execution time : 25.641 s
Press any key to continue.
-----------------------------------------------------------------------------
*/


思考题:题目条件不变,但考虑同时对评委的评分进行裁判,即在10个评委中找到最公平(既评分最接近平均分)和最不公平(既与平均分的差距最大)的评委,程序应如何实现?

解答:
#include<stdio.h>
#include<math.h>
int
main()
{
int a[10],b[10],max,min,max1,min1,sum,avr,m,n,i;
max = -32768;
min = 32767;
sum = 0;
for(i=1;i<=10;i++)
{
printf("%d号评委打分=",i);
scanf("%d",&a[i]);
sum += a[i];
}
for(i=1;i<=10;i++)
{
if(a[i]>max) max = a[i];
if(a[i]<min) min = a[i];
}
avr = (sum-max-min)/8;
//找出最公平和最不公平的评委:
//--------------------------------------------------
for(i=1;i<=10;i++)
b[i] = abs(a[i] - avr);
max1 = b[1];
min1 = b[1];
m = 1;
n = 1;
for(i=1;i<=10;i++)
{
if(b[i]>max1) {max1 = b[i];m = i;}
if(b[i]<min1) {min1 = b[i];n = i;}
}
printf("去掉的最高分:%d/n去掉的最低分:%d/n",max,min);
printf("平均分:%d/n",avr);
printf("最公平的评委为%d号评委/n",n);
printf("最不公平的评委为%d号评委/n",m);
return 0;
}
/*
output:
--------------------------------------------------------------------
1号评委打分=86
2号评委打分=65
3号评委打分=76
4号评委打分=86
5号评委打分=78
6号评委打分=86
7号评委打分=45
8号评委打分=98
9号评委打分=29
10号评委打分=45
去掉的最高分:98
去掉的最低分:29
平均分:70
最公平的评委为2号评委
最不公平的评委为9号评委
Process returned 0 (0x0)   execution time : 16.469 s
Press any key to continue.
--------------------------------------------------------------------
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: