如何查找数组的最小和最大元素?
private void button1_Click(object sender, EventArgs e)
{
int[] m = new int[1000];
int n = textBox1.Lines.Lenght;
int i;
int k = 0;
int sum = 0;
int product = 1;
int average = 0;
for (i = 0; i < n; i++)
{
try
{
m[k] = Convert.ToInt32(textBox1.Lines[i]);
sum = sum + m[k];
product = product * m[k];
average = sum/n;
}
catch
{
MessangeBox.Show("Буквы нельзя!!");
k++;
}
}
label10.Text = n.ToString();
label11.Text = sum.ToString();
label12.Text = product.ToString();
label13.Text = average.ToString();
}
以下应该有所帮助:
private void button1_Click(object sender, EventArgs e)
{
int[] m = new int[1000];
int n = textBox1.Lines.Lenght;
int i;
int k = 0;
int sum = 0;
int product = 1;
int average = 0;
int min = Int32.MaxValue; // will hold min value
int max = Int32.MinValue; // will hold max value
for (i = 0; i < n; i++)
{
try
{
m[k] = Convert.ToInt32(textBox1.Lines[i]);
sum = sum + m[k];
product = product * m[k];
if (m[k] < min)
min = m[k];
if (m[k] > max)
max = m[k];
}
catch
{
MessageBox.Show("Буквы нельзя!!");
k++;
}
}
average = sum/n; //Computing average here is more efficient
label10.Text = n.ToString();
label11.Text = sum.ToString();
label12.Text = product.ToString();
label13.Text = average.ToString();
}
警告:如果你的数组是空的,你可能不希望有Int32.MaxValue和Int32.MinValue作为默认的最小值和最大值。您需要分开处理该案件。
我认为这是最有效的解决方案。 –
谢谢,它有帮助 –
using System;
using System.Collections.Generic;
using System.Linq;
int[] m = new int[1000];
// fill in the array here .....
int min = m.Min(); // find the minimum
int max = m.Max(); // find the maximum
小心解释为什么有倒票?他想知道如何找到数组的最小值和最大值。 –
我同意,这是我会寻找的答案! –
不知道为什么它被downvoted。有一个upvote。 :)但是,计算OP代码中现有循环中的最大值和最小值会更有效,而不是在所有元素中循环多出两次。 –
你的问题有点不清楚。你能解释一下你的问题吗? –
使用[Max](https://msdn.microsoft.com/en-us/library/system.linq.enumerable.max(v = vs.110).aspx)和[Min](https:// msdn。 microsoft.com/en-us/library/system.linq.enumerable.min(v=vs.110).aspx)查找数组中的最大数字或最小数字。 – Icemanind