【算法精练】歌星大奖赛及扩展
歌星大奖赛要求:在歌星大奖赛中,有10个评委为参赛选手打分,分数为1到100分。选手最后得分为:去掉一个最高分,去掉一个最低分,最终得分为8个分数的平均分。请编写C/C++程序实现。算法设计:这个问题的算法十分简单,但要注意在程序中判断最大、最小值的变量是如何赋初值的。源代码及注释:#include <stdio.h>#include &
·
歌星大奖赛
要求:在歌星大奖赛中,有10个评委为参赛选手打分,分数为1到100分。选手最后得分为:去掉一个最高分,去掉一个最低分,最终得分为8个分数的平均分。请编写C/C++程序实现。
算法设计:这个问题的算法十分简单,但要注意在程序中判断最大、最小值的变量是如何赋初值的。
源代码及注释:
#include <stdio.h>
#include <Windows.h>
int main()
{
int integer;
int i = 0;
int max = INT_MIN; //注意max与min的初值,假定两个极值,
int min = INT_MAX; // 赋初值时注意赋予两个值域之外的值
int sum = 0;
int Average = 0;
for(i = 1;i <= 10;i++)
{
printf("Please enter judges %i:",i);
scanf("%d",&integer);
sum += integer; //累加求和
if(integer > max)
max = integer; //最高分
if(integer < min)
min = integer; //最低分
}
printf("max = %d , min = %d\n",max,min);
printf("Average sorce: %d\n",(sum - max - min)/8);
system("pause");
return 0 ;
}
思考题(扩展)
要求:题目条件不变,但考虑同时对评委的评分进行裁判,记载10个评委中找到最高分(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委,程序应该如何实现?
算法设计:在原先的基础上,要对之前数据进行判断,因此首先应该保存之前的数据,这里用数组来保存成绩。通过平均分与成绩之间的差值保存在另一个数组中,求出最大值和最小值即可。
源代码及注释:
#include <stdio.h>
#include <Windows.h>
int main()
{
int integer[10] = {0}; //评委判定成绩
int temp[10] = {0}; //与平均分的差值
int i = 0;
int max = -1; //注意max与min的初值,假定两个极值
int min = 101;
int sum = 0;
int Average = 0;
int judges1 = 0;
int judges2 = 0;
for(i = 1;i <= 10;i++)
{
printf("Please enter judges %i:",i);
scanf("%d",&integer[i]);
sum += integer[i];
if(integer[i] > max)
max = integer[i]; //最高分
if(integer[i] < min)
min = integer[i]; //最低分
}
printf("去除一个最高分:%d , 去除一个最低分:%d 最终得分为:%d\n",max,min,(sum-max-min)/8);
Average = (sum - max - min)/8;
min = 101;
max = -1;
for(i = 1;i <= 10;i++)
{
temp[i] = Average - integer[i];
temp[i] = temp[i] > 0?temp[i]:(-temp[i]);//将平均分与成绩差值的绝对值保存
if(temp[i] != 0 && (temp[i] > max))
{
max = temp[i]; //差值的最大值
judges1 = i;
}
if(temp[i] != 0 && (temp[i] < min))
{
min = temp[i];
judges2 = i; //差值的最小值
}
}
printf("最公平的裁判是:judges%d,评分为:%d\n最不公平的裁判是:judges%d,评分为:%d\n",judges2,integer[judges2],judges1,integer[judges1]);
system("pause");
return 0 ;
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)