T1:交换数组元素位置,并求出最大、最小值。
T2:从大到小输出数组元素。
假定数组长度最大为30。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
internal class Program
{
static void Main(string[] args)
{
Random rand = new Random();
int num = rand.Next(1, 31);//获取随机数
int[] arr = new int[num];
for (int i = 0; i < num; i++)
{
int a = rand.Next(0,1000);
arr[i] = a; //赋值
}
//T1
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine("数组正序的第{0}个元素:{1}", i, arr[i]);//看一下数组长什么样
}
Console.WriteLine("\n\n");
//数组长度为偶数
if (arr.Length % 2 == 0)
{
for (int i = 0; i < arr.Length / 2; i++)
{
int a = arr[i];
arr[i] = arr[arr.Length - i - 1];
arr[arr.Length - i - 1] = a;
}
}
//数组长度为奇数
else
{
for (int i = 0; i < Math.Floor((double)(arr.Length / 2)); i++)
{
if (i != (arr.Length / 2) + 1)
{
int a = arr[i];
arr[i] = arr[arr.Length - i - 1];
arr[arr.Length - i - 1] = a;
}
else
{
break;
}
}
}
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine("数组倒序的第{0}个元素:{1}", i, arr[i]);//看下长啥样
}
int max = 0;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] >= max)
{
max = arr[i];
}
else
{
continue;
}
}
int min = max;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] <= min)
{
min = arr[i];
}
else
{
continue;
}
}
Console.WriteLine();
Console.WriteLine("最大值:{0};最小值:{1}", max, min);
Console.WriteLine();
//T2
int max1 ;
for (int i = 0; i < arr.Length - 1; i++)
{
max1 = arr[i];
if (arr[i + 1] < arr[i])
{
arr[i] = arr[i + 1];
arr[i + 1] = max1;
i = -1;
}
}
for (int i = 0; i < arr.Length; i++)
{
Console.Write("{0}\t",arr[i]);
}
Console.ReadKey();
}
}
}
绝大部分逻辑很简单的代码都有对应的方法可以实现,例如:
先定义一个方法用来输出:
static public void BianLiArr(int[] a)
{
foreach (int i in a)
{
Console.WriteLine(a[i - 1]);
}
}
然后:
//T1
Array.Reverse(arr);//反转
BianLiArr(arr);
Console.WriteLine();
int min=arr.Min();//最小
int max=arr.Max();//最大
Console.WriteLine("最大值:{0},最小值:{1}",max,min);
Console.WriteLine();
//T2
Array.Sort(arr);//排序
BianLiArr(arr);
Console.ReadKey();
数组的定义和赋值和前面相同。
代码还有一些冗余。