`
yeshaoting
  • 浏览: 686027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

趣味编程 - 歌星大奖赛

阅读更多


*问题说明:

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。

 

*思考题

题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?

 

*问题分析与算法设计:

这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。


/* * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All right reserved.
 *
 * Created on Mar 17, 2011 4:36:59 PM
 *
 *		http://jarg.iteye.com/
 *
 */
// Contributors:  Jarg Yee <yeshaoting@gmail.com>

import java.io.*;
import static java.lang.Math.abs;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.out;

/*
 * TODO 歌星大奖赛
 */
public class SingerCompetition
{
	private static final int[] VALUE = {90,91,93,94,90,99,97,92,91,95};
	private static final int NUM = VALUE.length;		// 评委人数
	
	/** local params */
	/** 最大分,最小分 */
	private static int max = 0,min = 100;
	/** 总分,平均分 */
	private static int sum = 0,avg = 0;
	/** 最小,最大差分 */
	private static int gap1 = 100,gap2 = 0;
	/* 最公平,最不公平评委(可能有多个人) */
	private static List fairList = new ArrayList(),unfairList = new ArrayList();

	/**
	 * TODO for debugging.
	 */
	public static void main(String[] args)
	{
		
		extremNUM();	/* 求极值分 */

		evaluation();	/* 评价评委 */
	}

	/* 求极值分 */
	public static void extremNUM()
	{
		for(int i=0; i<NUM; i++)
		{
			if(VALUE[i]>max)
				max = VALUE[i];
			if(VALUE[i]<min)
				min = VALUE[i];
			sum = sum + VALUE[i];		// 求总分
			out.println("Input NUMber " + i + ":" + VALUE[i]);
		}
		sum = sum - max - min;		// 去除最高分和最小分
		avg = sum/(NUM-2);
		out.println("Canceled max score:" + max);
		out.println("Canceled min score:" + min);
		out.println("Average score:" + avg);
	}

	/* 评价评委 */
	public static void evaluation()
	{
		for(int i=0; i<NUM; i++)
		{
			if(abs(VALUE[i] - avg)<=gap1)
			{
				if(abs(VALUE[i] - avg)!=gap1)
					fairList.clear();
				gap1 = abs(VALUE[i] - avg);
				fairList.add("" + i);
			}
			if(abs(VALUE[i] - avg)>=gap2)
			{
				if(abs(VALUE[i] - avg)!=gap2)
					unfairList.clear();
				gap2 = abs(VALUE[i] - avg);
				unfairList.add("" + i);
			}
		}
		out.print("Most fair judges:");
		for(int i=0;i<fairList.size();i++)
			out.print("\t" + fairList.get(i));
		out.println();

		out.print("Most unfair judges:");
		for(int i=0;i<unfairList.size();i++)
			out.print("\t" + unfairList.get(i));
		out.println();
	}

}
 


 

  • 大小: 18.2 KB
分享到:
评论

相关推荐

    Cc++趣味程序百例(献给CC++初学者)借鉴.pdf

    这套题集中的其他程序,如歌星大奖赛程序,让学生通过编写代码来模拟歌手比赛的投票和排名过程,不但锻炼了算法设计能力,也加强了对数组和排序算法的理解。求最大数的程序则可能引入了动态规划的概念,帮助学生理解...

    趣味编程.pdf

    #### 四、歌星大奖赛 **知识点解析:** 1. **问题分析与算法设计:** - **数据处理:** 程序需要处理10个评委给出的评分,并计算最终得分。 - **去除极端值:** 去掉一个最高分和一个最低分后,计算剩余8个分数的...

    C/C++语言经典实用趣味程序设计编程百例精解

    歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 &lt;br&gt;C/C++语言经典实用趣味程序设计编程百例精解(2) &lt;br&gt;11.打鱼还是晒网 ...

    共享一個個人寫的仿百度貼吧程序

    “稳重厚实,代码清晰”暗示了程序的代码质量较高,遵循良好的编程规范,易于理解和维护。这对于其他开发者来说是一大优点,他们可以更轻松地阅读和修改源码,学习项目中的设计模式和最佳实践。 这个开源项目不仅是...

    百味编程趣味编程百例

    C/C++语言经典实用趣味程序设计编程百例精解(1) ...1.绘制余弦曲线 2.绘制余弦曲线和直线 ...4.歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换

    C/C++经典实用趣味程序设计编程例子精解(DOC)

    歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数值转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利...

    c与c++语言经典、实用、趣味程序设计编程

    4. **歌星大奖赛评分系统** - **数据处理**:处理10个评委的分数,去除一个最高分和一个最低分,计算平均得分。 - **算法设计**:这里涉及到数据排序,可以使用快速排序、冒泡排序等方法找到最高分和最低分,然后...

    C C++语言经典、实用、趣味程序设计编程百例精解

    第四个例子中,讲解了如何实现歌星大奖赛的评分系统,使用了数组和循环来实现评委的打分和计算选手的最后得分。 本文涵盖了多个方面的知识点,包括程序设计、算法设计、数据结构、数学计算、图形显示等,对于 C/C++...

    c\c++语言经典、实用、趣味程序设计编程百例精解

    最后,我们来看一个非图形绘制的例子——歌星大奖赛得分计算。这个案例虽然不涉及图形绘制,但它是对基础算法应用的很好展现。在编程实现中,我们通过数组存储评委的打分,然后进行排序以去掉一个最高分和一个最低分...

    C语言100例_C++100例+经典、实用、趣味程序设计编程百例精解

    最后一个练习是关于歌星大奖赛场景的一个数据处理问题。有10个评委为参赛者打分,每个评委的分数在1到100分之间。选手的最终得分是去掉一个最高分和一个最低分后,剩余8个分数的平均值。这一节的练习要求编写程序来...

    C-C++语言趣味程序设计编程百例精解

    歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 &lt;br&gt;C/C++语言经典实用趣味程序设计编程百例精解(2) (详解收藏在)...

    C++趣味小程序百例

    根据给定文件的信息,我们可以总结出一系列与C/C++编程相关的知识点,特别是针对初学者的趣味编程案例。以下是对部分示例程序的知识点概括及详细解释: ### 绘制余弦曲线 #### 问题背景 - **目的**:在屏幕上用“*...

    C++语言经典、实用、趣味程序设计编程百例精解.pdf

    例子4:歌星大奖赛 在这个例子中,我们将学习如何使用C++语言解决实际问题。问题是,如何计算选手的最后得分。解决方案是使用循环来计算每个评委的分数,并将其相加得到最后的得分。 这个例子展示了如何使用C++...

    C/C++语言经典、实用、趣味程序设计编程百例精解

    虽然给定的内容中没有提供完整的歌星大奖赛程序,但从标题推测,这一部分可能涉及的数据结构和算法包括: 1. **数组或列表**:存储评委评分,可能需要使用数组或列表来保存每个评委给出的分数。 2. **排序算法**:...

    C-C++语言趣味程序设计编程百例精解(1)

    #### 歌星大奖赛 **知识点**: 1. **数组应用**: 使用数组来存储评委的评分。 2. **排序算法**: 对评分进行排序,以便找到最大值和最小值。 3. **数学计算**: 计算剩余评分的平均值。 **代码解析**: 假设这里有一个...

    C趣味程序百例Word版

    例如,歌星大奖赛的评分系统,需要去掉一个最高分和一个最低分,然后求平均得分。这涉及到数组操作和基本统计计算,如排序和求平均值。可以使用C语言的数组存储10个评委的分数,通过排序找出最大值和最小值,然后...

    C/C++语言经典、实用、趣味程序设计编程例题精解

    最后,我们讨论一个更贴近实际应用的例题:设计一个歌星大奖赛的评分系统。在这样的系统中,我们需要处理大量数据,并对这些数据进行排序和筛选。通过使用数组来存储评委的打分,我们可以利用C/C++中的`sort`函数来...

Global site tag (gtag.js) - Google Analytics