2. 用C语言编程找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。
时间: 2023-11-06 08:04:39 浏览: 95
以下是用C语言编写的找出一个二维数组的“鞍点”的程序:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main()
{
int arr[ROWS][COLS] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 示例数组
int i, j, row_max, col_min, saddle_point_exists;
saddle_point_exists = 0; // 初始化鞍点不存在
// 遍历每一行
for (i = 0; i < ROWS; i++) {
row_max = arr[i][0]; // 初始化该行最大值为第一个元素
// 找到该行的最大值
for (j = 1; j < COLS; j++) {
if (arr[i][j] > row_max) {
row_max = arr[i][j];
}
}
// 遍历该行的每一个元素
for (j = 0; j < COLS; j++) {
col_min = arr[0][j]; // 初始化该列最小值为第一个元素
// 找到该列的最小值
for (int k = 1; k < ROWS; k++) {
if (arr[k][j] < col_min) {
col_min = arr[k][j];
}
}
// 如果该元素既是该行的最大值又是该列的最小值,则为鞍点
if (arr[i][j] == row_max && arr[i][j] == col_min) {
printf("鞍点为(%d, %d),值为%d\n", i, j, arr[i][j]);
saddle_point_exists = 1; // 标记已找到鞍点
}
}
}
if (!saddle_point_exists) {
printf("该矩阵不存在鞍点。\n");
}
return 0;
}
```
程序首先定义了一个示例数组,然后依次遍历每一行,找到该行的最大值。接着遍历该行的每一个元素,找到该列的最小值。如果该元素既是该行的最大值又是该列的最小值,则输出该元素的位置和值,并标记已找到鞍点。最后,如果没有找到鞍点,则输出不存在鞍点的提示。
阅读全文