1.函数实现

0)打印数组

/// <summary>
/// 打印数组
/// </summary>
/// <param name="arr">数组</param>
/// <param name="numberPerLine">每行打印元素数量</param>
/// <param name="digitAfterDot">小数点后保留位数</param>
private static void PrintArray(double[] arr, int numberPerLine = 7, int digitAfterDot = 2)
{
//设定小数点后保留位数(函数ToString()的参数)
string format = "#0.";
while (true)
{
if (digitAfterDot <= 0) break;
format += '0';
digitAfterDot--;
} //打印数组
for (int i = 0; i < (arr.Length - 1) / numberPerLine + 1; i++)
{
for (int j = 0; j < numberPerLine; j++)
{
int index = i * numberPerLine + j;
if (index < arr.Length)
{
Console.Write(arr[index].ToString(format) + "\t");
}
}
Console.WriteLine();
}
}

1)算术平均数:(x1+x2+...+xn)/n

/// <summary>
/// 计算算数平均数:(x1+x2+...+xn)/n
/// </summary>
/// <param name="arr">数组</param>
/// <returns>算术平均数</returns>
private static double ArithmeticMean(double[] arr)
{
double result = 0;
foreach (double num in arr)
{
result += num;
}
return result / arr.Length;
}

2)几何平均数:(x1*x2*...*xn)^(1/n)

/// <summary>
/// 几何平均数:(x1*x2*...*xn)^(1/n)
/// </summary>
/// <param name="arr">数组</param>
/// <returns>几何平均数</returns>
private static double GeometricMean(double[] arr)
{
double result = 1;
foreach (double num in arr)
{
result *= Math.Pow(num, 1.0 / arr.Length);
}
return result;
}

3)调和平均数:n/((1/x1)+(1/x2)+...+(1/xn))

/// <summary>
/// 调和平均数:n/((1/x1)+(1/x2)+...+(1/xn))
/// </summary>
/// <param name="arr">数组</param>
/// <returns>调和平均数</returns>
private static double HarmonicMean(double[] arr)
{
double temp = 0;
foreach (double num in arr)
{
temp += (1.0 / num);
}
return arr.Length / temp;
}

4)平方平均数:((x1*x1+x2*x2+...+xn*xn)/n)^(1/2)

/// <summary>
/// 平方平均数:((x1*x1+x2*x2+...+xn*xn)/n)^(1/2)
/// </summary>
/// <param name="arr">数组</param>
/// <returns>平方平均数</returns>
private static double RootMeanSquare(double[] arr)
{
double temp = 0;
foreach (double num in arr)
{
temp += (num * num);
}
return Math.Sqrt(temp / arr.Length);
}

5)中位数

/// <summary>
/// 计算中位数
/// </summary>
/// <param name="arr">数组</param>
/// <returns></returns>
private static double Median(double[] arr)
{
//为了不修改arr值,对数组的计算和修改在tempArr数组中进行
double[] tempArr = new double[arr.Length];
arr.CopyTo(tempArr, 0); //对数组进行排序
double temp;
for (int i = 0; i < tempArr.Length; i++)
{
for (int j = i; j < tempArr.Length; j++)
{
if (tempArr[i] > tempArr[j])
{
temp = tempArr[i];
tempArr[i] = tempArr[j];
tempArr[j] = temp;
}
}
} //针对数组元素的奇偶分类讨论
if (tempArr.Length % 2 != 0)
{
return tempArr[arr.Length / 2 + 1];
}
else
{
return (tempArr[tempArr.Length / 2] +
tempArr[tempArr.Length / 2 + 1]) / 2.0;
}
}

2.Main函数调用

static void Main(string[] args)
{
//一个数组
double[] arr = new double[]
{
3, 2, 7, 4, 8, 8, 5,
5, 6, 5, 1, 8, 4, 9
}; //打印数组
PrintArray(arr); //调和平均数≤几何平均数≤算术平均数≤平方平均数
Console.WriteLine("算术平均数:" + ArithmeticMean(arr).ToString("#0.000"));
Console.WriteLine("几何平均数:" + GeometricMean(arr).ToString("#0.000"));
Console.WriteLine("调和平均数:" + HarmonicMean(arr).ToString("#0.000"));
Console.WriteLine("平方平均数:" + RootMeanSquare(arr).ToString("#0.000"));
Console.WriteLine("中位数:" + Median(arr).ToString("#0.000")); Console.ReadLine();
}

3.运行示例

C#计算数组的算术平均数、几何平均数、调和平均数、平方平均数和中位数的更多相关文章

  1. 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题

    一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: ,,,,,}; int ...

  2. JAVA 数组实例-求学生平均成绩,与计算数组的长度

    实例: 知识点:数组名.length是计算数组的长度 import java.util.*; //求学生平均分成绩 public class Test{ public static void main ...

  3. 李洪强iOS开发之计算数组的最大最小值

    // //  ViewController.m //  A21 - 李洪强 - 输出参数 // //  Created by vic fan on 16/7/3. //  Copyright © 20 ...

  4. PHP:第四章——PHP数组array_intersect计算数组交集

    <pre> <?php //array_intersect计算数组交集 header("Content-Type:text/html;charset=utf-8" ...

  5. PHP:第四章——PHP数组array_diff计算数组差集

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff — 计 ...

  6. PHP array_diff 计算数组的差集

    array_diff (PHP 4 >= 4.0.1, PHP 5) array_diff — 计算数组的差集 说明 array array_diff ( array $array1 , arr ...

  7. php计算数组相同值出现次数的代码(array_count_values)

    php计算数组相同值出现次数,可以使用php自带函数array_count_values : 说明 array array_count_values ( array $input )array_cou ...

  8. 计算数组arr中所有元素的和

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. js计算数组中每个元素出现的次数

    计算数组中每个元素出现的次数 var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; var countedNames = names.redu ...

随机推荐

  1. 08.利用Easymock测试简单的servlet

    1.首先导入需要使用的servlet的jar包 接下来我们编写一个登陆的servlet package com.fjnu.service; import java.net.HttpRetryExcep ...

  2. FreeSql 使用 ToTreeList/AsTreeCte 查询无限级分类表

    关于无限级分类 第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类. 这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fi ...

  3. Java工具类——日期相关的类

    前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家. 正文 一.日期类介绍 在 Java 里面,操作日 ...

  4. unable to load script from assets 'index.android bundle'

    在Android手机上运行React-native项目时 报错:unable to load script from assets 'index.android bundle'  ,make sure ...

  5. js事件入门(2)

    2.鼠标事件 鼠标事件就是用户与页面的许多交互时通过鼠标移动或者鼠标点击等触发的事件. 2.1.onmousedown 鼠标按下的时候触发的事件 <!DOCTYPE html> <h ...

  6. Linux hostname主机名配置文件/etc/hosts详解

    这篇文章为大家介绍linux hostname主机名配置文件/etc/hosts,包括主机名的用途.配置文件的操作方法等,有需要的朋友,可以参考下 1.什么是Linux主机名 无论在局域网还是INTE ...

  7. Java String的相关性质分析

    引言 String可以说是在Java开发中必不可缺的一种类,String容易忽略的细节也很多,对String的了解程度也反映了一个Java程序员的基本功.下面就由一个面试题来引出对String的剖析. ...

  8. GoLand 2020.1.3破解教程

    此教程适用于GoLand 2020.1.3其他版本理论上是一样的. GoLand建议从官网下载---->>>>>>下载 1 如果之前有激活留下的补丁文件,建议卸载删 ...

  9. .net Framework4 类库调用Jwt

    通过jwt源码,将其引用的Newtonsoft.Json.dll的9.0版本改为最新的12.0版本后重新生成以下文件. 下载地址: https://files.cnblogs.com/files/Zh ...

  10. Windows下生成IOS证书并发布APP安装到IPhone

    目录: 一:生成证书 二:安装到IPhone 准备环境: 1.Appuploader(需要安装Java环境) 2.爱思助手 一.生成证书 1.1.打开appuploader后登陆开发者账号 1.2.点 ...