以下是使用 C 语言解决此问题的示例代码: ```c #include <stdio.h> // 计算两个矩形的重合面积 int maxOverlapArea(int len1, int wid1, int len2, int wid2) { int area1 = len1 * wid1; int area2 = len2 * wid2; // 情况 1:矩形 2 完全包含在矩形 1 内 if (len2 <= len1 && wid2 <= wid1) { return area2; } // 情况 2:矩形 1 完全包含在矩形 2 内 else if (len1 <= len2 && wid1 <= wid2) { return area1; } // 情况 3:矩形部分重叠 else { int overlapLen = 0, overlapWid = 0; // 计算重叠的长度 if (len2 <= len1) { overlapLen = len2; } else if (len1 <= len2) { overlapLen = len1; } else { int start1 = len1 / 2 - wid2 / 2; int end1 = len1 / 2 + wid2 / 2; if (start1 <= 0 && end1 >= len1) { overlapLen = len1; } else if (start1 >= 0 && end1 <= len1) { overlapLen = wid2; } else if (start1 < 0) { overlapLen = end1; } else { overlapLen = len1 - start1; } } // 计算重叠的宽度 if (wid2 <= wid1) { overlapWid = wid2; } else if (wid1 <= wid2) { overlapWid = wid1; } else { int start2 = wid1 / 2 - len2 / 2; int end2 = wid1 / 2 + len2 / 2; if (start2 <= 0 && end2 >= wid1) { overlapWid = wid1; } else if (start2 >= 0 && end2 <= wid1) { overlapWid = len2; } else if (start2 < 0) { overlapWid = end2; } else { overlapWid = wid1 - start2; } } return overlapLen * overlapWid; } } int main() { int len1, wid1, len2, wid2; printf("请输入矩形 1 的长和宽:"); scanf("%d %d", &len1, &wid1); printf("请输入矩形 2 的长和宽:"); scanf("%d %d", &len2, &wid2); int overlapArea = maxOverlapArea(len1, wid1, len2, wid2); printf("两个矩形上下叠放后的最大重合面积为:%d\n", overlapArea); return 0; } ``` 这段代码首先考虑了两个矩形完全包含和部分重叠的情况,通过计算重叠部分的长度和宽度来得到重合面积。 [2024-10-31 14:57:36 | AI写代码神器 | 756点数解答]