5.4 C# 多维数组(二维数组、多维数组、杨辉三角形、二维数组相加)


5.4.1 C# 二维数组

在C#中,二维数组可以看作是数组的数组,即数组的每个元素本身也是一个数组。二维数组通常用于表示表格数据或矩阵。

1. 声明二维数组

声明二维数组时,你需要指定两个维度的大小。例如,声明一个3行4列的二维数组如下:

int[,] twoDArray = new int[3, 4];

2. 初始化二维数组

初始化二维数组可以逐个赋值,也可以使用初始化器。

逐个赋值

int[,] twoDArray = new int[3, 4];
twoDArray[0, 0] = 1;
twoDArray[0, 1] = 2;
// 继续为其他元素赋值...

使用初始化器

int[,] twoDArray = new int[3, 4] {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

例5-12:读取二维数组中的值

using System;

class Program
{
    static void Main()
    {
        // 初始化一个二维数组
        int[,] twoDArray = new int[3, 4] {
            {1, 2, 3, 4},
            {5, 6, 7, 8},
            {9, 10, 11, 12}
        };

        // 读取并输出二维数组中的值
        Console.WriteLine("二维数组的值:");
        for (int i = 0; i < twoDArray.GetLength(0); i++) // 遍历行
        {
            for (int j = 0; j < twoDArray.GetLength(1); j++) // 遍历列
            {
                Console.Write(twoDArray[i, j] + " ");
            }
            Console.WriteLine(); // 换行
        }
    }
}

在这个示例中,我们首先声明并初始化了一个3行4列的二维数组twoDArray。然后,我们使用两个嵌套的for循环来遍历数组的每一行和每一列,并使用Console.Write方法输出每个元素的值。每遍历完一行后,我们使用Console.WriteLine方法换行,以便输出结果更易于阅读。

GetLength(0)GetLength(1)方法分别返回数组的第一个维度(行数)和第二个维度(列数)的大小。这是获取数组维度大小的标准方法。

5.4.2 C# 多维数组

在C#中,多维数组是数组的扩展,可以有超过两个维度。常见的多维数组包括二维数组(如矩阵)和三维数组(如3D空间中的点阵)。以下是如何声明、初始化和使用多维数组的示例。

1. 声明多维数组

声明多维数组时,你需要为每个维度指定大小。例如,声明一个3x4x2的三维数组如下:

int[,,] threeDArray = new int[3, 4, 2];

2. 初始化多维数组

初始化多维数组可以逐个赋值,也可以使用初始化器。

逐个赋值

int[,,] threeDArray = new int[3, 4, 2];
threeDArray[0, 0, 0] = 1;
threeDArray[0, 0, 1] = 2;
// 继续为其他元素赋值...

使用初始化器

int[,,] threeDArray = new int[3, 4, 2] {
    {
        {1, 2}, {3, 4}, {5, 6}, {7, 8}
    },
    {
        {9, 10}, {11, 12}, {13, 14}, {15, 16}
    },
    {
        {17, 18}, {19, 20}, {21, 22}, {23, 24}
    }
};

3. 多维数组的使用

多维数组的使用涉及到遍历数组并访问其元素。以下是如何遍历和读取三维数组的示例。

using System;

class Program
{
    static void Main()
    {
        // 初始化一个三维数组
        int[,,] threeDArray = new int[3, 4, 2] {
            {
                {1, 2}, {3, 4}, {5, 6}, {7, 8}
            },
            {
                {9, 10}, {11, 12}, {13, 14}, {15, 16}
            },
            {
                {17, 18}, {19, 20}, {21, 22}, {23, 24}
            }
        };

        // 读取并输出三维数组中的值
        Console.WriteLine("三维数组的值:");
        for (int i = 0; i < threeDArray.GetLength(0); i++) // 遍历第一维
        {
            for (int j = 0; j < threeDArray.GetLength(1); j++) // 遍历第二维
            {
                for (int k = 0; k < threeDArray.GetLength(2); k++) // 遍历第三维
                {
                    Console.Write(threeDArray[i, j, k] + " ");
                }
                Console.WriteLine(); // 换行
            }
            Console.WriteLine(new string('-', 10)); // 分隔不同层
        }
    }
}

在这个示例中,我们首先声明并初始化了一个3x4x2的三维数组threeDArray。然后,我们使用三个嵌套的for循环来遍历数组的三个维度,并使用Console.Write方法输出每个元素的值。每遍历完一个维度后,我们使用Console.WriteLine方法换行或分隔不同层,以便输出结果更易于阅读。

GetLength(0)GetLength(1)GetLength(2)方法分别返回数组的第一个、第二个和第三个维度的大小。这是获取数组维度大小的标准方法。

5.4.3 C# 应用实例

例5-13:键盘输入两个二维数组并相加

这个程序将从键盘接收两个二维数组的输入,将它们相加,然后输出结果。

using System;

class Program
{
    static void Main()
    {
        Console.Write("输入第一个二维数组的行数和列数(用空格分隔):");
        string[] input1 = Console.ReadLine().Split(' ');
        int rows = int.Parse(input1[0]);
        int cols = int.Parse(input1[1]);
        
        int[,] array1 = new int[rows, cols];
        Console.WriteLine("输入第一个二维数组的元素:");
        for (int i = 0; i < rows; i++)
        {
            string[] elements = Console.ReadLine().Split(' ');
            for (int j = 0; j < cols; j++)
            {
                array1[i, j] = int.Parse(elements[j]);
            }
        }

        Console.Write("输入第二个二维数组的行数和列数(用空格分隔):");
        string[] input2 = Console.ReadLine().Split(' ');
        int rows2 = int.Parse(input2[0]);
        int cols2 = int.Parse(input2[1]);
        
        int[,] array2 = new int[rows2, cols2];
        Console.WriteLine("输入第二个二维数组的元素:");
        for (int i = 0; i < rows2; i++)
        {
            string[] elements = Console.ReadLine().Split(' ');
            for (int j = 0; j < cols2; j++)
            {
                array2[i, j] = int.Parse(elements[j]);
            }
        }

        // 确保两个数组具有相同的维度
        if (rows != rows2 || cols != cols2)
        {
            Console.WriteLine("数组维度不匹配,无法相加。");
            return;
        }

        int[,] result = new int[rows, cols];
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                result[i, j] = array1[i, j] + array2[i, j];
            }
        }

        Console.WriteLine("两个数组相加的结果为:");
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < cols; j++)
            {
                Console.Write(result[i, j] + " ");
            }
            Console.WriteLine();
        }
    }
}

例5-14:生成并输出杨辉三角

杨辉三角是一个由数字组成的三角形,其中每个数字是它正上方两个数字的和。

using System;

class Program
{
    static void Main()
    {
        Console.Write("输入杨辉三角的行数:");
        int numRows = int.Parse(Console.ReadLine());

        int[][] pascalTriangle = new int[numRows][];
        
        for (int i = 0; i < numRows; i++)
        {
            pascalTriangle[i] = new int[i + 1];
            pascalTriangle[i][0] = 1; // 每行的第一个数字是1
            pascalTriangle[i][i] = 1; // 每行的最后一个数字是1

            for (int j = 1; j < i; j++)
            {
                pascalTriangle[i][j] = pascalTriangle[i - 1][j - 1] + pascalTriangle[i - 1][j];
            }
        }

        Console.WriteLine("杨辉三角为:");
        for (int i = 0; i < numRows; i++)
        {
            for (int j = 0; j <= i; j++)
            {
                Console.Write(pascalTriangle[i][j] + " ");
            }
            Console.WriteLine();
        }
    }
}

这两个程序展示了如何在C#中处理二维数组和生成数学模式。第一个程序从用户那里获取两个二维数组的输入,将它们相加,并输出结果。第二个程序生成并输出指定行数的杨辉三角。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值