You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现:查找数组中与平均值最近及最远的数值

帮你完成找出数组中离平均值最近/最远数的练习

没问题!你已经完成了输入10个正整数、计算平均值和创建数组的核心步骤,接下来只需要补充逻辑就能找出目标数值了。先给你提个小建议:目前你用int类型计算平均值会自动取整,比如总和是123的话,平均值会变成12而不是实际的12.3,这样计算距离时会有误差,建议把平均值改成double类型,用浮点数除法来保证精度。

下面是补充完整后的代码,我会在后面解释关键逻辑:

Console.WriteLine("Geef 10 gehele positieve getallen.");
Console.WriteLine("Getal 1:");
int g1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 2:");
int g2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 3:");
int g3 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 4:");
int g4 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 5:");
int g5 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 6:");
int g6 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 7:");
int g7 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 8:");
int g8 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 9:");
int g9 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Getal 10:");
int g10 = Convert.ToInt32(Console.ReadLine());

// 改成double类型,用10.0做除法保证浮点数精度
double gemiddelde = (g1 + g2 + g3 + g4 + g5 + g6 + g7 + g8 + g9 + g10) / 10.0;
int[] array = new int[10] {g1,g2,g3,g4,g5,g6,g7,g8,g9,g10};

// 初始化最近/最远的数和对应的距离
int closestNumber = array[0];
double smallestDistance = Math.Abs(array[0] - gemiddelde);

int farthestNumber = array[0];
double largestDistance = Math.Abs(array[0] - gemiddelde);

// 遍历数组,逐个比较距离
foreach (int num in array)
{
    double currentDistance = Math.Abs(num - gemiddelde);
    
    // 更新最近的数
    if (currentDistance < smallestDistance)
    {
        smallestDistance = currentDistance;
        closestNumber = num;
    }
    // 更新最远的数
    if (currentDistance > largestDistance)
    {
        largestDistance = currentDistance;
        farthestNumber = num;
    }
}

// 输出结果
Console.WriteLine($"Gemiddelde: {gemiddelde:F2}");
Console.WriteLine($"Getal het dichtst bij het gemiddelde: {closestNumber}");
Console.WriteLine($"Getal het verst van het gemiddelde: {farthestNumber}");

关键逻辑解释:

  • 距离计算:用Math.Abs()获取数值和平均值的绝对值,因为我们只关心距离的大小,不管是比平均值大还是小。
  • 初始化变量:先把数组第一个元素作为初始的最近/最远数,对应的距离也用第一个元素计算,这样遍历的时候有基准可以比较。
  • 遍历比较:逐个检查数组里的每个数,计算它和平均值的距离,如果比当前最小距离更小,就更新最近的数;如果比当前最大距离更大,就更新最远的数。
  • 结果输出:用{gemiddelde:F2}把平均值格式化为两位小数,看起来更清晰。

如果遇到多个数距离平均值一样近(或一样远)的情况,这段代码会取数组中第一个出现的那个数,要是你需要找出所有符合条件的数,可以再调整逻辑~

内容的提问来源于stack exchange,提问作者wariscoming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:00:34