从数组中查找最小值和最大值,最小值始终为0

亚历克斯

该程序首先询问用户要存储在数组中的元素的数量,然后询问数量。

这是我的代码

    static void Main(string[] args)
    {
        Console.Write("How many numbers do you want to store in array: ");
        int n = Convert.ToInt32(Console.ReadLine());
        int[] numbers = new int[n];
        int min = numbers[0];
        int max = numbers[0];

        for (int i = 0; i < n; i++)
        {
            Console.Write("Enter number {0}:  ", i+1);
            numbers[i] = Convert.ToInt32(Console.ReadLine());
        }

        for (int i = 0; i < n; i++)
        {
            if (min > numbers[i]) min = numbers[i];
            if (max < numbers[i]) max = numbers[i];
        }
        Console.WriteLine("The minimum is: {0}", min);
        Console.WriteLine("The maximum is: {0}", max);
        Console.ReadKey();
    }
  }
}

但是最小值始终为0,为什么呢?

罗林

你的问题是,你初始化minmaxnumbers[0] 之前填充数字,所以他们都得到设置为零。无论是min(如果您的所有数字均为正)还是max(如果您的所有数字均为负)都是错误的。

如果您移动块

int min = numbers[0];
int max = numbers[0];

for (int i = 0; i < n; i++)
{
    Console.Write("Enter number {0}:  ", i+1);
    numbers[i] = Convert.ToInt32(Console.ReadLine());
}

然后minmax都初始化为第一个输入数字,这很好。实际上,您可以将for循环限制为仅检查后续数字:

for (int i = 1; i < n; i++)
    ....

只要确保用户的值n大于零即可!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章