【算法精练】歌星大奖赛及扩展

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41035588/article/details/83310576

歌星大奖赛

要求:在歌星大奖赛中,有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 ;
}

猜你喜欢

转载自blog.csdn.net/qq_41035588/article/details/83310576
今日推荐