```c #include <stdio.h> // 寻找矩阵的马鞍点 void findSaddlePoints(int m, int n, int a[m][n]) { int i, j, k; int hasSaddlePoint = 0; // 标记是否存在马鞍点 for (i = 0; i < m; i++) { int minValueInRow = a[i][0]; // 初始化每行的最小值 int minColIndex = 0; // 记录最小值所在的列索引 for (j = 1; j < n; j++) { // 找出每行的最小值及其所在列 if (a[i][j] < minValueInRow) { minValueInRow = a[i][j]; minColIndex = j; } } int maxValueInCol = a[0][minColIndex]; // 初始化对应列的最大值 int maxRowIndex = 0; // 记录最大值所在的行索引 for (k = 1; k < m; k++) { // 找出对应列的最大值及其所在行 if (a[k][minColIndex] > maxValueInCol) { maxValueInCol = a[k][minColIndex]; maxRowIndex = k; } } if (maxValueInCol == minValueInRow && maxRowIndex == i) { // 如果最大值和最小值相等且所在行相同,即为马鞍点 printf("%4d", a[i][minColIndex]); hasSaddlePoint = 1; } } if (!hasSaddlePoint) { // 如果没有马鞍点,输出 no printf("no"); } } int main() { int m, n; scanf("%d %d", &m, &n); // 输入矩阵的行数和列数 int a[m][n]; int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); // 输入矩阵元素 } } findSaddlePoints(m, n, a); // 调用函数寻找马鞍点 return 0; } ``` 注意点: 1. 输入矩阵元素时要确保输入的数量和格式正确。 2. 在比较每行和每列的最值时,要注意边界情况,避免越界访问。 3. 函数内部的逻辑要清晰,确保能正确找到马鞍点并进行输出。 [2024-12-20 11:29:01 | AI写代码神器 | 600点数解答]