编写C#程序,计算去除最大值和最小值之后的平均值

有10位评委对跳水运动员做评分,编写C#程序,计算去除最大得分和最小得分之后的平均得分 作为运动员的跳水成绩。

interface IMark

using System.Collections.Generic;

namespace ConsoleApp1
{
    /// <summary>
    /// 评分接口
    /// </summary>
    interface IMark
    {

        Mark GetMaxScore(List<Mark> list_Marks);

        Mark GetMinScore(List<Mark> list_Marks);

        /// <summary>
        /// 获取所有评分
        /// </summary>
        /// <returns></returns>
        List<Mark> GetAllMarks(int athleteId);

        /// <summary>
        /// 获取除最大得分和最小得分之后的平均得分
        /// </summary>
        /// <returns></returns>
        float GetAvgScoreExceptFirstAndLast();
    }
}

class Mark

namespace ConsoleApp1
{
    /// <summary>
    /// 评分实体
    /// </summary>
    public class Mark
    {
        public int Id;
        public int JuryId;
        public int AthleteId;
        public float Score;
    }
}

class MarkService

using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp1
{
    /// <summary>
    /// 实现评分接口
    /// </summary>
    public class MarkService : IMark
    {
        public MarkService()
        {
        }

        /// <summary>
        /// 获取所有评分
        /// </summary>
        /// <param name="athleteId"></param>
        /// <returns></returns>
        public List<Mark> GetAllMarks(int athleteId)
        {
            List<Mark> list = new List<Mark>();
            for (int i = 1; i < 11; i++) {
                list.Add(new Mark()
                {
                    Id = i,
                    JuryId = i,
                    AthleteId = 1,
                    Score = i,
                });
            }
            return list.Where(x=>x.AthleteId ==athleteId).ToList();
        } 

        /// <summary>
        /// 获取除最小分数、最大分数之外的平均得分
        /// </summary>
        /// <returns></returns>
        public float GetAvgScoreExceptFirstAndLast()
        {
            List<Mark> List_Marks = this.GetAllMarks(1);
            return List_Marks.Where(
                x => x.Id != this.GetMaxScore(List_Marks).Id &&
                    x.Id != this.GetMinScore(List_Marks).Id).Average(y=>y.Score);
        }

        /// <summary>
        /// 获取最大得分
        /// </summary>
        /// <param name="list_Marks"></param>
        /// <returns></returns>
        public Mark GetMaxScore(List<Mark> list_Marks)
        {
            float maxScore = list_Marks.Max<Mark>(x => x.Score);
            return list_Marks.Where(x => x.Score == maxScore).FirstOrDefault();
        }

        /// <summary>
        /// 获取最小得分
        /// </summary>
        /// <param name="list_Marks"></param>
        /// <returns></returns>
        public Mark GetMinScore(List<Mark> list_Marks)
        {
            float minScore = list_Marks.Min<Mark>(x => x.Score);
            return list_Marks.Where(x => x.Score == minScore).FirstOrDefault();
        }

    }
}

class Program

using System;
using System.Text;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            IMark t = new Test();
            Console.WriteLine(t.GetAvgScoreExceptFirstAndLast());

            Console.Read();

        }
    }
}
时间: 2024-10-08 23:02:12

编写C#程序,计算去除最大值和最小值之后的平均值的相关文章

35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

  35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和: (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!): (4)编写测试类E,在测试类E的main方法中使用接口回调的形式来测试实现 接口的类. p

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果 import javax.swing.JOptionPane; public class Test{ public static void main(String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog("Input number 1: ")); int n2=Integer.parseInt(JOptionPane.showInpu

初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值

//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值package com.azhi;//纠正昨天的包名,今天老师说要以反域名命名,昨天还不知道,今天就这么弄了一个import java.util.Scanner;public class Text_Array { public static void main(String[] args){ Scanner sc=new Scanner(System.in);//从键盘输入 System.out.print("请输入学生个数:&quo

算法训练 最大值与最小值的计算

时间限制:1.0s   内存限制:512.0MB 输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int temp

调用方法计算数组的和,最大值,最小值

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication7 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 //调用方法计算数组的和,最大值,最小值 1

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。

问题描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果.输入值小于1000.如,输入为10,程序应该输出结果为2.(共有两对质数的和为10,分别为(5,5),(3,7)) 附算法代码: public class PrimeNumber { //判断是否是质数 protected boolean isPrimeNumber(int num){ if(num == 2) return true;//2特殊处理 if(num < 2 || num % 2 == 0) r

构建一个学生Student,根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。

定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号: sName表示姓名: sSex表示性别: sAge表示年龄: sJava:表示Java课程成绩. (2)类Student带参数的构造方法: 在构造方法中通过形参完成对成员变量的赋值操作. (3)类Student的方法成员: getNo():获得学号: getName():获得姓名: getSex():获得性别: getAge()获得年龄: getJava():获得Java 课程成绩 根据类

shell脚本,计算输入给定的数,判断最大值,最小值,总和?

[[email protected] ~]# cat five.sh #!/bin/bash #任意输入5个数,判断最大值,最小值,总和 s=0 read -p "please input:" num s=$(($s+$num)) max=$num min=$num for i in `seq 4` do read -p "please input:" num s=$(($s+$num)) if [ $num -le $min ];then min=$num fi

[程序员代码面试指南]栈和队列-最大值减去最小值 小于或等于num 的子数组的数量(双端队列)

题目 给定数组arr和整数num,求数组的子数组中有多少个的满足"最大值减去最小值<=num". 解题思路 分析题目,有结论: 如果数组arr[i...j]满足条件,则它的每一个子数组都满足条件. 如果数组arr[i...j]不满足条件,则包含它的每一个数组都不满足条件. 数据结构:用i.j表示当前窗口,分别使用两个双端队列维护窗口的最大值和最小值. 具体地,每次更新两个双端队列,检查当前的窗口是否满足条件,满足则j++,不满足则cnt+=j-i,更新双端队列,i++,j不变.若