--- created: 2024-06-14T18:42:06 (UTC +08:00) tags: [] source: https://mooc1.chaoxing.com/mooc-ans/mooc2/work/view?courseId=206698159&classId=93333441&cpi=264745337&workId=32765903&answerId=52487855&enc=031a4b312438cfdfa89b5af7da836ffe author: --- # 作业详情 > ## Excerpt > 数组合并问题: --- ### 1\. (简答题) 数组合并问题: 假设有两个一维数组,其元素都是一些数值,均已按升序排列。现要求将两个数组中的元素合并到一个数组中,合并后的数组元素保持升序排列。写一个函数int\[\] Merge(int\[\], int\[\]),用循环结构对两个输入的数组进行处理,返回合并后的数组。然后用以下数据测试。 ![](https://p.ananas.chaoxing.com/star3/origin/462d93f9db544a366b43c8ac2860a98d.png) 请在下方粘贴程序代码,并粘贴运行结果的截图。 _我的答案:_ ```plain using System; using System.Linq; class Program {    static void Main()    {        // 提示用户输入第一个数组        Console.Write("请输入第一个数组(以逗号分隔数字):");        int[] array1 = ReadArrayFromConsole();        // 提示用户输入第二个数组        Console.Write("请输入第二个数组(以逗号分隔数字):");        int[] array2 = ReadArrayFromConsole();        // 调用合并函数        int[] mergedArray = Merge(array1, array2);        // 打印合并后的数组        Console.WriteLine("合并后的数组:");        foreach (var element in mergedArray)        {            Console.Write(element + " ");        }        // 等待用户按任意键退出程序        Console.ReadKey();    }    // 从控制台读取一维数组    static int[] ReadArrayFromConsole()    {        string input = Console.ReadLine();        if (string.IsNullOrWhiteSpace(input))        {            return new int[0]; // 返回空数组        }        return input.Split(',').Select(int.Parse).ToArray();    }    // 合并两个升序数组并保持升序的函数    static int[] Merge(int[] array1, int[] array2)    {        int length1 = array1.Length;        int length2 = array2.Length;        int[] mergedArray = new int[length1 + length2];        int i = 0, j = 0, k = 0;        // 循环比较两个数组的元素,将较小的元素加入合并后的数组        while (i < length1 && j < length2)        {            if (array1[i] < array2[j])            {                mergedArray[k] = array1[i];                i++;            }            else            {                mergedArray[k] = array2[j];                j++;            }            k++;        }        // 将剩余的元素加入合并后的数组        while (i < length1)        {            mergedArray[k] = array1[i];            i++;            k++;        }        while (j < length2)        {            mergedArray[k] = array2[j];            j++;            k++;        }        return mergedArray;    } } ``` ![](https://p.ananas.chaoxing.com/star3/origin/70a408966f9532f939bd2700630f2390)![](https://p.ananas.chaoxing.com/star3/origin/5991b861d33fa82c6301914621989117)![](https://p.ananas.chaoxing.com/star3/origin/bed2b1e213cd882a68034ee3e2e36bbd) ![](https://p.ananas.chaoxing.com/star3/origin/f3ea67c7e0b65b0bdf963f0db0616cad) _正确答案:_ ### 2\. (简答题) 将 1, 2, ..., 9共 9 个数字分成 3 组,分别组成 3 个三位数,且使这 3 个三位数构成1:2:3 的比例,试求出所有满足条件的 3 个三位数。 可能要用到字符串的一些方法:IndexOf查询某个字符或子串的位置,找不到返回-1;Contains查询是否包含某个字符或子串;其它方法请查询帮助文件。 输出示例: 192 384 576 ......(还有其它组,请自行完成) 请在下方粘贴程序代码,并粘贴运行结果的截图。 _我的答案:_ ```plain using System; class Program {    static void Main()    {        FindNumbersWithRatio();        // 等待用户按任意键退出程序        Console.ReadKey();    }    static void FindNumbersWithRatio()    {        for (int a = 100; a < 333; a++)        {            int b = 2 * a;            int c = 3 * a;            int[] s = new int[9];            s[0] = a / 100; s[1] = a % 100 / 10; s[2] = a % 10;            s[3] = b / 100; s[4] = b % 100 / 10; s[5] = b % 10;            s[6] = c / 100; s[7] = c % 100 / 10; s[8] = c % 10;            bool hasDuplicate = false;            bool hasZero = false;            for (int i = 0; i < 8; i++)            {                for (int j = i + 1; j < 9; j++)                {                    if (s[i] == s[j] || s[i] == 0 || s[j] == 0)                    {                        hasDuplicate = true;                        break;                    }                }                if (hasDuplicate)                    break;            }            if (!hasDuplicate)            {                Console.WriteLine($"{a}, {b}, {c}");            }        }    } } ``` ![](https://p.ananas.chaoxing.com/star3/origin/809d0bceb028f918f5e9c87c2ba8bb4e) _正确答案:_