You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#二维数组随机赋值、查找最大值及索引问题求助

解决随机二维数组生成及最大值查找问题

一、灵活处理M和N

你当前代码里M、N是固定的4,若要更灵活,可改为让用户输入,或者保持变量赋值即可:

// 方式1:用户输入动态获取
Console.Write("请输入行数M: ");
int m = int.Parse(Console.ReadLine());
Console.Write("请输入列数N: ");
int n = int.Parse(Console.ReadLine());

// 方式2:固定值(保留你原来的写法也完全可行)
// int m = 4; int n = 4;

数组初始化时直接用这两个变量确定维度,你代码里这部分逻辑是正确的。

二、完善数组显示

你现在的输出没有换行,所有元素会挤在一行,每行遍历结束后加换行即可:

for(int i=0;i<m;i++)
{
    for(int j =0;j<n;j++){
        m1[i,j] = rnd.Next(100);
        Console.Write(m1[i,j] + "\t");
    }
    Console.WriteLine(); // 每行结束换行,让数组显示更规整
}

三、查找最大值及对应索引

初始化最大值时直接用数组第一个元素(避免数组全为负数时出错),然后遍历所有元素,逐个比较更新最大值和索引:

int max = m1[0,0];
int maxRow = 0, maxCol = 0;

for(int i=0;i<m;i++)
{
    for(int j=0;j<n;j++)
    {
        if(m1[i,j] > max)
        {
            max = m1[i,j];
            maxRow = i;
            maxCol = j;
        }
    }
}

// 输出结果,可同时提供程序索引(从0开始)和直观位置(从1开始)
Console.WriteLine($"\n最大元素值: {max}");
Console.WriteLine($"数组索引(从0开始):行{maxRow},列{maxCol}");
Console.WriteLine($"直观位置(从1开始):第{maxRow+1}行,第{maxCol+1}列");

完整整合代码

namespace Program
{
    class Program
    {
        static void Main(string[] args)
        {
            int m, n; 
            Random rnd = new Random();
            
            // 可选:用户输入M、N,注释掉则用固定值
            Console.Write("请输入行数M: ");
            m = int.Parse(Console.ReadLine());
            Console.Write("请输入列数N: ");
            n = int.Parse(Console.ReadLine());
            
            // 固定值写法:
            // m = 4; 
            // n = 4; 
            
            int[,] m1 = new int[m, n];

            // 生成并显示数组
            Console.WriteLine("\n生成的二维数组:");
            for(int i=0;i<m;i++)
            {
                for(int j =0;j<n;j++){
                    m1[i,j] = rnd.Next(100);
                    Console.Write(m1[i,j] + "\t");
                }
                Console.WriteLine();
            }

            // 查找最大值及索引
            int max = m1[0,0];
            int maxRow = 0, maxCol = 0;
            for(int i=0;i<m;i++)
            {
                for(int j=0;j<n;j++)
                {
                    if(m1[i,j] > max)
                    {
                        max = m1[i,j];
                        maxRow = i;
                        maxCol = j;
                    }
                }
            }

            Console.WriteLine($"\n最大元素值为: {max}");
            Console.WriteLine($"它的数组索引(从0开始):行{maxRow},列{maxCol}");
            Console.WriteLine($"它的直观位置(从1开始):第{maxRow+1}行,第{maxCol+1}列");
        }
    }
}

关键要点

  • M、N处理:只要保证是正整数,无论是固定赋值还是用户输入,都能正常初始化二维数组。
  • 最大值查找:必须遍历所有元素,初始最大值要设为数组内的元素,不能随便设0(防止数组全为负数的情况),每次找到更大值就同步更新对应的行、列索引。

内容的提问来源于stack exchange,提问作者Matvei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:45:48