在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小, 则该元素即为该二维数组的一个鞍点。要求从一个整数二维数组中找出鞍点, 打印鞍点所在行和列,空格分开。如果没有,打印出“NO”。如果有多个鞍点, 打印找到的第一个鞍点。如:二维数组:a[][4]={1,7,4,1,4,8,3,6,1,6,1,2,1,5,3,4},最后一行第二个元素5是鞍点。 二维数组:a[][4]={1,7,4,1,4,8,3,6,1,6,1,2,6,5,3,4},没有鞍点 c语言运用指针
时间: 2023-08-07 13:06:37 浏览: 147
以下是代码实现,注释在代码中:
```c
#include <stdio.h>
// 判断是否为鞍点
int isSaddlePoint(int *arr, int row, int col, int i, int j) {
int k;
// 检查行
for (k = 0; k < col; k++) {
if (*(arr + i * col + k) > *(arr + i * col + j)) {
return 0;
}
}
// 检查列
for (k = 0; k < row; k++) {
if (*(arr + k * col + j) < *(arr + i * col + j)) {
return 0;
}
}
return 1;
}
int main() {
int a[][4] = {1, 7, 4, 1, 4, 8, 3, 6, 1, 6, 1, 2, 1, 5, 3, 4};
int row = 4;
int col = 4;
int i, j;
int flag = 0; // 标记是否找到鞍点
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (isSaddlePoint((int *)a, row, col, i, j)) {
printf("%d行%d列 %d\n", i+1, j+1, *(a + i * col + j));
flag = 1;
break;
}
}
if (flag) {
break;
}
}
if (!flag) {
printf("NO");
}
return 0;
}
```
阅读全文