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

二维数组行元素与对应行最大值相乘问题及代码调试求助

二维数组按行乘对应行最大值的实现修复

需求回顾

给定两个n×n的二维数组,生成新数组的规则是:将第一个数组每行的每个元素,分别乘以第二个数组对应行的元素最大值。

示例验证

以提供的示例数组为例:
第一个数组:

2 3 4
1 1 1
12 1 1

第二个数组:

8 12 16
1 1 1
12 1 1

按照规则计算后,新数组应为:

32 48 64
1 1 1
144 12 12

原代码问题分析

原代码存在以下关键问题:

  • 未实现双数组逻辑:仅生成了一个随机数组,完全没有处理需求中的第二个数组
  • 最大值计算逻辑错误:循环中每次重置max为当前元素,判断后未正确更新最大值,且循环范围遗漏了最后一个元素
  • 新数组赋值不完整:仅给每行最后一个元素赋值,其余元素保持默认的0值
  • 最大值初始化错误:固定设为999,应基于每行第一个元素初始化

修正后的代码

using System;

namespace Lab_4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入数组的维度n:");
            int n = Convert.ToInt32(Console.ReadLine());

            // 初始化并输入第一个数组
            int[,] firstArray = new int[n, n];
            Console.WriteLine($"请输入第一个{n}×{n}数组的元素(每行输入n个数字,空格分隔):");
            for (int i = 0; i < n; i++)
            {
                string[] row = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                for (int j = 0; j < n; j++)
                {
                    firstArray[i, j] = int.Parse(row[j]);
                }
            }

            // 初始化并输入第二个数组
            int[,] secondArray = new int[n, n];
            Console.WriteLine($"请输入第二个{n}×{n}数组的元素(每行输入n个数字,空格分隔):");
            for (int i = 0; i < n; i++)
            {
                string[] row = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                for (int j = 0; j < n; j++)
                {
                    secondArray[i, j] = int.Parse(row[j]);
                }
            }

            // 生成结果数组
            int[,] resultArray = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                // 计算当前行的最大值
                int rowMax = secondArray[i, 0];
                for (int j = 1; j < n; j++)
                {
                    if (secondArray[i, j] > rowMax)
                    {
                        rowMax = secondArray[i, j];
                    }
                }

                // 给结果数组赋值
                for (int j = 0; j < n; j++)
                {
                    resultArray[i, j] = firstArray[i, j] * rowMax;
                }
            }

            // 输出结果数组
            Console.WriteLine("\n生成的新数组:");
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(resultArray[i, j] + " ");
                }
                Console.WriteLine();
            }
        }
    }
}

代码说明

  1. 支持用户手动输入两个n×n数组,贴合需求场景
  2. 正确计算第二个数组每行的最大值:从每行第一个元素开始遍历比较,动态更新最大值
  3. 遍历第一个数组的每个元素,乘以对应行的最大值,完成整个结果数组的赋值
  4. 输出清晰的操作提示,提升用户操作体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:30:54