编写一个C语言程序,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
时间: 2023-11-06 14:13:21 浏览: 103
以下是一个在二维数组中找出鞍点的 C 语言程序:
```c
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
int main() {
int matrix[MAX_ROWS][MAX_COLS];
int num_rows, num_cols;
int i, j;
int row_max, col_min;
int found_saddle_point;
// 读取矩阵大小和元素
printf("请输入矩阵的行数和列数:\n");
scanf("%d %d", &num_rows, &num_cols);
printf("请输入矩阵的元素:\n");
for (i = 0; i < num_rows; i++) {
for (j = 0; j < num_cols; j++) {
scanf("%d", &matrix[i][j]);
}
}
found_saddle_point = 0;
// 在每一行中找到最大值,然后在该列中找最小值
for (i = 0; i < num_rows; i++) {
row_max = matrix[i][0];
for (j = 1; j < num_cols; j++) {
if (matrix[i][j] > row_max) {
row_max = matrix[i][j];
}
}
for (j = 0; j < num_cols; j++) {
if (matrix[i][j] == row_max) {
col_min = matrix[0][j];
// 在该列中找最小值
for (int k = 1; k < num_rows; k++) {
if (matrix[k][j] < col_min) {
col_min = matrix[k][j];
}
}
// 如果该位置上的元素在该行上最大、在该列上最小,则是鞍点
if (matrix[i][j] == col_min) {
printf("鞍点为 matrix[%d][%d],值为 %d\n", i, j, matrix[i][j]);
found_saddle_point = 1;
}
}
}
}
if (!found_saddle_point) {
printf("该矩阵没有鞍点\n");
}
return 0;
}
```
该程序首先读取矩阵的大小和元素,然后在每一行中找到最大值,然后在该列中找最小值。如果该位置上的元素在该行上最大、在该列上最小,则是鞍点。程序最后输出鞍点的位置和值,或者输出没有鞍点。
阅读全文