用c语言写出:找出一个4x4二维数组中的鞍点,即该位置上的元素在该行最大,在该列最小(不会出现重复数字的情况),可能没有鞍点。
时间: 2023-06-11 12:09:08 浏览: 147
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main() {
int rows = 4, cols = 4;
int matrix[rows][cols];
int has_saddle_point = 0; // 是否存在鞍点
int row_idx = -1, col_idx = -1; // 鞍点的行和列
int i, j;
// 读入矩阵
printf("请输入4x4的矩阵:\n");
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 查找鞍点
for (i = 0; i < rows; i++) {
int max_val = matrix[i][0]; // 当前行的最大值
int max_col = 0; // 最大值所在的列
for (j = 1; j < cols; j++) {
if (matrix[i][j] > max_val) {
max_val = matrix[i][j];
max_col = j;
}
}
// 判断是否为鞍点
int is_saddle_point = 1;
for (j = 0; j < rows; j++) {
if (matrix[j][max_col] < max_val) {
is_saddle_point = 0;
break;
}
}
if (is_saddle_point) {
has_saddle_point = 1;
row_idx = i;
col_idx = max_col;
break; // 找到第一个鞍点就退出
}
}
// 输出结果
if (has_saddle_point) {
printf("鞍点的位置为(%d, %d),值为%d\n", row_idx, col_idx, matrix[row_idx][col_idx]);
} else {
printf("不存在鞍点\n");
}
return 0;
}
```
这个程序首先读入一个4x4的矩阵,然后查找其中的鞍点,并输出鞍点的位置和值,或者输出不存在鞍点。在查找鞍点时,它先找出每一行的最大值和最大值所在的列,然后判断该列上的元素是否都小于等于该最大值,如果是,则该位置就是鞍点。如果找到了鞍点,就输出其位置和值,否则输出不存在鞍点。
阅读全文