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
相关产品推荐
相关产品推荐

