数组c的最大值和最小值

时间:2016-10-04 18:23:53

标签: c# arrays

所以,我在数组中输入双值,然后建立总和(没有最大值和最小值),平均值,最大值和最小值。一切都很好,但是min永远是0,我不知道该怎么做;

注意:不使用Max()Min()方法

static void Main(string[] args)
{
    double avr = 0;
    double sum = 0;
    double max;
    double min;
    Console.WriteLine("how many numbers?");
    int b = Convert.ToInt32(Console.ReadLine());
    double[] arr = new double[b];
    max = arr[0];
    min = arr[0];
    for (int i = 0; i < b; i++)
    {
        arr[i] = Convert.ToDouble(Console.ReadLine());
        if (arr[i] >= max)
        {
            max = arr[i];
        }

        else if (arr[i] <= min)
        {
            min = arr[i];
        }
        sum += arr[i];
    }

    sum = sum - max - min;
    avr = sum / (b - 2);

    Console.WriteLine("sum = {0},average = {1}, max = {2}, min = {3}", sum, avr, max, min);
    Console.ReadKey();
}

3 个答案:

答案 0 :(得分:3)

您使用默认值double初始化minmax - 因此在任何迭代之前都将设置为0。因此,如果所有元素都大于零min - 当所有元素都小于零时,max将无法正常工作。

修复

  • double.MinValue / double.MaxValue用于相应的最小值/最大值,以便任何实际值都满足if条件  max = double.MinValue;
  • 更好地分割读取数组和计算统计数据 - 比使用arr[0]实际上包含有效的用户提供的值而不是默认值。

答案 1 :(得分:2)

初始化最大值和最小值时,将其设置为arr[0],这将为0.这意味着你的min已准备好处于非常低的值。

执行double.MinValedouble.MaxValue来初始化最大和最小变量。

答案 2 :(得分:1)

此代码执行您尝试实现的目标。我删除了数组,因为它没有任何功能。有两个问题(也见代码中的注释): 1)else if语句:一个值可以同时是最小值和最大值,当输入的数字总是高于前一个时,将永远不会达到else。 2)初始最小值应该是最大可能值。

static void Main(string[] args)
{
    double avr = 0;
    double sum = 0;
    double max = 0;
    double min = Double.MaxValue; // *** Initially set to maximum possible number ***
    Console.WriteLine("How many numbers?");
    int b = Convert.ToInt32(Console.ReadLine());
    for (int i = 0; i < b; i++)
    {
        double number = Convert.ToDouble(Console.ReadLine());
        if (number >= max)
        {
            max = number;
        }
        if (number <= min) // *** The else is removed here ***
        {
            min = number;
        }
        sum += number;
    }

    sum = sum - max - min; // Exclude lowest and hightest value
    avr = sum / (b - 2); // Average excluding lowest and highest value

    Console.WriteLine("sum = {0}, average = {1}, max = {2}, min = {3}", sum, avr, max, min);
    Console.ReadKey();
}