程序设计基础
登录

知识介绍

一维数组声明与初始化:

// 方式1:声明后赋值
int[] arr1 = new int[5];          // 长度为5,元素默认值为0
arr1[0] = 10; arr1[1] = 20;

// 方式2:声明时直接初始化(省略长度)
int[] arr2 = { 1, 2, 3, 4, 5 };

// 方式3:完整形式
int[] arr3 = new int[] { 10, 20, 30 };

常用属性和方法:

int[] nums = { 3, 1, 4, 1, 5, 9, 2, 6 };

int len = nums.Length;        // 8
Array.Sort(nums);             // 排序:[1,1,2,3,4,5,6,9]
Array.Reverse(nums);          // 反转:[9,6,5,4,3,2,1,1]
int idx = Array.IndexOf(nums, 5);  // 查找元素位置

二维数组:

// 多维数组(矩阵形式)
int[,] matrix = new int[3, 3]
{
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
Console.WriteLine(matrix[0, 2]);  // 3

// 交错数组(数组的数组,每行长度可以不同)
int[][] jagged = new int[2][];
jagged[0] = new int[3] { 1, 2, 3 };
jagged[1] = new int[2] { 4, 5 };

例题

例题1: 找出数组中的最大值及下标。

int[] scores = { 78, 92, 65, 88, 95, 72, 85 };
int max = scores[0];
int maxIndex = 0;
for (int i = 1; i < scores.Length; i++)
{
    if (scores[i] > max)
    {
        max = scores[i];
        maxIndex = i;
    }
}
Console.WriteLine($"最高分:{max},下标:{maxIndex}");

例题2: 冒泡排序(升序)。

int[] arr = { 5, 3, 8, 1, 9, 2 };
for (int i = 0; i < arr.Length - 1; i++)        // 轮数
{
    for (int j = 0; j < arr.Length - 1 - i; j++) // 每轮比较
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}
Console.WriteLine(string.Join(",", arr));  // 1,2,3,5,8,9

练习题

  1. 声明一个长度为10的 int 数组,用 Random 填充1-100的随机数,然后求平均值、输出所有大于平均值的元素。

  2. 输入5个整数存入数组,实现"反转"输出(不使用 Array.Reverse,手动交换)。

  3. 有一个已经有序的数组 {2, 5, 8, 13, 21, 34, 55},输入一个数插入到合适位置,保持数组有序。

  4. 定义一个 3×4 的二维数组,填入随机数,求所有元素的和以及每行的最大值。

  5. 数组去重:{1, 2, 2, 3, 4, 4, 4, 5} → 输出去重后的元素。