数组中最大和最小的数字

这完美地工作……但是当我使用foreach而不是for此时不起作用。 我无法理解和foreach是一样的。

 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int[] array = new int[10]; Console.WriteLine("enter the array elements to b sorted"); for(int i=0;i<10;i++) { array[i] = Convert.ToInt32(Console.ReadLine()); } int smallest = array[0]; for(int i=0;i<10;i++) { if(array[i]<smallest) { smallest=array[i]; } } int largest = array[9]; for(int i=0;i largest) { largest = array[i]; } } Console.WriteLine("the smallest no is {0}", smallest); Console.WriteLine("the largest no is {0}", largest); Console.Read(); } } } 

你为什么不用这个?

 int[] array = { 12, 56, 89, 65, 61, 36, 45, 23 }; int max = array.Max(); int min = array.Min(); 

如果你需要使用foreach(由于某种原因)并且不想使用bult-in函数,这里是一个代码片段:

 int minint = array[0]; int maxint = array[0]; foreach (int value in array) { if (value < minint) minint = value; if (value > maxint) maxint = value; } 
  static void PrintSmallestLargest(int[] arr) { if (arr.Length > 0) { int small = arr[0]; int large = arr[0]; for (int i = 0; i < arr.Length; i++) { if (large < arr[i]) { int tmp = large; large = arr[i]; arr[i] = large; } if (small > arr[i]) { int tmp = small; small = arr[i]; arr[i] = small; } } Console.WriteLine("Smallest is {0}", small); Console.WriteLine("Largest is {0}", large); } } 

这样,您可以在单个循环中拥有最小和最大的数字。

您(通常)在使用foreach时无法修改您正在迭代的集合。

虽然从开发人员的角度来看,for和foreach似乎是相似的,但它们与实现的观点截然不同。

Foreach使用Iterator访问单个对象,而不知道(或关心)底层对象序列。

通用扩展方法(在一次迭代中获取MinMax ):

 public static class MyExtension { public static (T Min, T Max) MinMax(this IEnumerable source) where T : IComparable { if (source == null) { throw new ArgumentNullException(nameof(source)); } T min = source.FirstOrDefault(); T max = source.FirstOrDefault(); foreach (T item in source) { if (item.CompareTo(min) == -1) { min = item; } if (item.CompareTo(max) == 1) { max = item; } } return (Min: min, Max: max); } } 

此代码使用C#7 Tuple

 using System; namespace greatest { class Greatest { public static void Main(String[] args) { //get the number of elements Console.WriteLine("enter the number of elements"); int i; i=Convert.ToInt32(Console.ReadLine()); int[] abc = new int[i]; //accept the elements for(int size=-1; size 
 Int[] number ={1,2,3,4,5,6,7,8,9,10}; Int? Result = null; foreach(Int i in number) { If(!Result.HasValue || i< Result) { Result =i; } } Console.WriteLine(Result); } 
  public int MinimumValue { get; private set; } public int MaxmimumValue { get; private set; } public void num() { int[] array = { 12, 56, 89, 65, 61, 36, 45, 23 }; MaxmimumValue = array[0]; MinimumValue = array[0]; foreach (int num in array) { if (num > MaxmimumValue) MaxmimumValue = num; if (num < MinimumValue) MinimumValue = num; } Console.WriteLine(MinimumValue); Console.WriteLine(MaxmimumValue); } 

这是完整的程序给出下面 `

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Diagnostics; namespace oops3 { public class Demo { static void Main(string[] args) { Console.WriteLine("Enter the size of the array"); int x = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[x]; Console.WriteLine("Enter the elements of the array"); for(int i=0;iarr[i]) { smallest = arr[i]; } } for (int i = 0; i < x; i++) { if (Largest< arr[i]) { Largest = arr[i]; } } Console.WriteLine("The greater No in the array:" + Largest); Console.WriteLine("The smallest No in the array:" + smallest); Console.ReadLine(); } } } 
 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Array_Small_and_lagest { class Program { static void Main(string[] args) { int[] array = new int[10]; Console.WriteLine("enter the array elements to b sorted"); for (int i = 0; i < 10; i++) { array[i] = Convert.ToInt32(Console.ReadLine()); } int smallest = array[0]; foreach (int i in array) { if (i < smallest) { smallest = i; } } int largest = array[9]; foreach (int i in array) { if (i > largest) { largest = i; } } Console.WriteLine("the smallest no is {0}", smallest); Console.WriteLine("the largest no is {0}", largest); Console.Read(); } } } 

这是很长一段时间。 也许是这样的:

  public int smallestValue(int[] values) { int smallest = int.MaxValue; for (int i = 0; i < values.Length; i++) { smallest = (values[i] < smallest ? values[i] : smallest); } return smallest; } public static int largestvalue(int[] values) { int largest = int.MinValue; for (int i = 0; i < values.Length; i++) { largest = (values[i] > largest ? values[i] : largest); } return largest; }