欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

华为2012秋季校招机试题-选秀节目打分(题目来自网络)

程序员文章站 2022-05-03 12:13:09
...

选秀节目打分

选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。

 

打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分  * 0.6 + 大众评委 * 0.4总分取整

如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。

 

样例:

输入:

90 80 87 89 91
1 2 1 1 1

输出:

85

 

思路:直接对等级数组进行遍历,将专家和大众区分开;之后判定是否全是专家,进而进行相应的处理。

 

注:题目中并未给出取整的具体如何取整,程序中使用了四舍五入。

 

package com.liuhao;

import java.util.Scanner;

public class Score {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		final int N = 5;
		int[] score = new int[N];
		int[] judge_type = new int[N];

		for (int i = 0; i < score.length; i++) {
			score[i] = scan.nextInt();
		}

		// judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委
		for (int i = 0; i < judge_type.length; i++) {
			judge_type[i] = scan.nextInt();
		}

		// 总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。
		// 如果没有大众评委,则 总分 = 专家评委平均分,总分取整。

		double sum = 0;        //存放最后的分数
		int expNum = 0;        //存放专家人数
		int dazNum = 0;		   //存放大众人数
		double expSum = 0;     //存放专家总分数
		double dazSum = 0;     //存放大众总分数

		//分别统计专家和大众的总人数和总分数
		for (int i = 0; i < judge_type.length; i++) {
			if (1 == judge_type[i]) {
				expNum++;
				expSum += score[i];
			}
			if (2 == judge_type[i]) {
				dazNum++;
				dazSum += score[i];
			}
		}

		//最后的分数统计
		//首先判断是否全是专家
		//是,则 总分 = 专家评委平均分
		if (isAllExpert(judge_type)) {
			sum = expSum / expNum;
		} 
		//否,则 总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。
		else {
			sum = Math.round(expSum / expNum) * 0.6 + Math.round(dazSum / dazNum) * 0.4;
		}

		//总分取整。
		System.out.println(Math.round(sum));

	}

	private static boolean isAllExpert(int[] a) {
		boolean temp = true;

		for (int i = 0; i < a.length; i++) {
			if (2 == a[i]) {
				temp = false;
				break;
			}
		}
		return temp;
	}
}

 

相关标签: Java 试题