在 C 语言中,要找出二维数组 a[5][4] 的鞍点(saddle point),首先需要找到每行的最小元素和每列的最大元素。然后在数组中查找同时是行最小元素和列最大元素的元素,这些元素就是鞍点。
以下是一个示例代码来找到二维数组的鞍点:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 4
int main() {
int a[ROWS][COLS] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
{17, 18, 19, 20}
};
// 找每行的最小元素
int minRow[ROWS];
for (int i = 0; i < ROWS; i++) {
minRow[i] = a[i][0];
for (int j = 1; j < COLS; j++) {
if (a[i][j] < minRow[i]) {
minRow[i] = a[i][j];
}
}
}
// 找每列的最大元素
int maxCol[COLS];
for (int j = 0; j < COLS; j++) {
maxCol[j] = a[0][j];
for (int i = 1; i < ROWS; i++) {
if (a[i][j] > maxCol[j]) {
maxCol[j] = a[i][j];
}
}
}
// 查找鞍点
int saddlePoints = 0;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (a[i][j] == minRow[i] && a[i][j] == maxCol[j]) {
printf("鞍点:%d,位于第 %d 行,第 %d 列\n", a[i][j], i + 1, j + 1);
saddlePoints++;
}
}
}
if (saddlePoints == 0) {
printf("该数组没有鞍点。\n");
}
return 0;
}
```
请注意,上面的示例代码中给定了一个示例的二维数组 a[5][4]。你可以根据需要将其替换为其他任意大小的二维数组,然后运行代码来找到鞍点。