编写C语言程序,输出二维数组的鞍点,鞍点的元素值在该行上最大,在该列上最小,若没有鞍点输出“no”
时间: 2024-12-06 18:33:48 浏览: 12
c语言求二维数组鞍点.pdf
在C语言中,要找到并输出二维数组的鞍点,可以按照以下步骤编写程序:
1. 定义函数`find_min_max(arr, rows, cols)`,它接受一个二维数组`arr`,以及数组的行数`rows`和列数`cols`作为参数。
2. 初始化两个变量`max_row`、`min_col`分别用于记录当前找到的最大值所在的行和最小值所在的列。初始化这两个值为0。
3. 遍历整个数组:
- 对于每个元素`(i, j)`:
- 检查当前元素是否大于左邻元素且小于上邻元素(即当前元素是所在行的最大值,也是所在列的最小值),如果是,则找到了鞍点。
- 如果`arr[i][j] > arr[i][j-1] && arr[i][j] < arr[i-1][j]`,那么更新`max_row = i`和`min_col = j`。
- 记录当前的最大值和最小值,如果找到更大的值则覆盖原有的值。
4. 循环结束后,检查`max_row`和`min_col`是否都已经被赋值,如果没有,则说明没有鞍点存在,输出"no";如果有鞍点,则输出二维数组中的鞍点坐标`(max_row, min_col)`及其值`arr[max_row][min_col]`。
```c
#include <stdio.h>
void find_min_max(int arr[][COLS], int rows, int cols) {
int max_row = 0;
int min_col = 0;
for (int i = 1; i < rows; i++) {
for (int j = 1; j < cols; j++) {
if (arr[i][j] > arr[i][j-1] && arr[i][j] < arr[i-1][j]) {
max_row = i;
min_col = j;
break; // 找到后就跳出内层循环
}
}
}
if (max_row == 0 && min_col == 0) {
printf("no\n");
} else {
printf("鞍点坐标: (%d, %d), 值: %d\n", max_row, min_col, arr[max_row][min_col]);
}
}
// 示例用法
#define ROWS 5
#define COLS 4
int main() {
int arr[ROWS][COLS] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
{17, 18, 19, 20} };
find_min_max(arr, ROWS, COLS);
return 0;
}
```
记得替换`ROWS`和`COLS`为你实际使用的二维数组的行数和列数。
阅读全文