在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的鞍点。要求从键盘输入一个二维数组,当鞍点存在时,把鞍点找出来。用C语言
时间: 2024-09-29 14:15:51 浏览: 98
在C语言中,我们可以使用两层嵌套循环遍历二维数组来查找鞍点。鞍点是指数组中既不是行中最大的也不是列中最小的元素,但是它满足其所在行的最大值和所在列的最小值。下面是一个简单的示例程序:
```c
#include <stdio.h>
#define ROWS 5 // 定义数组行数
#define COLS 5 // 定义数组列数
void findHorseRace(int arr[ROWS][COLS], int row, int col) {
int maxRow = row; // 初始化最大行索引
int minCol = col; // 初始化最小列索引
int minValue = arr[row][col]; // 初始化最小值
for (int i = 0; i < ROWS; i++) {
if (arr[i][col] > minValue && i != row) {
minValue = arr[i][col];
maxRow = i;
}
}
for (int j = 0; j < COLS; j++) {
if (arr[row][j] < minValue && j != col) {
minValue = arr[row][j];
minCol = j;
}
}
if (maxRow != row || minCol != col) {
printf("The horse race point is at (%d,%d) with value %d\n", maxRow, minCol, minValue);
} else {
printf("No horse race point found.\n");
}
}
int main() {
int arr[ROWS][COLS];
printf("Enter a %dx%d matrix:\n", ROWS, COLS);
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
findHorseRace(arr, i, j); // 对每个元素查找是否是鞍点
}
}
return 0;
}
```
阅读全文
相关推荐

















