找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。C语言
时间: 2024-06-02 19:03:25 浏览: 168
找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小 也可能没有鞍点
以下是C语言实现在二维数组中找出鞍点的代码和解释:
```c
#include <stdio.h>
#define ROW 3
#define COL 4
int main()
{
int arr[ROW][COL] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 定义一个3行4列的二维数组
int i, j, k, max, min, flag;
for (i = 0; i < ROW; i++) // 遍历每一行
{
max = arr[i][0]; // 假设该行第一个元素为最大值
flag = 1; // 假设该行第一个元素为鞍点
for (j = 1; j < COL; j++) // 遍历该行每一个元素
{
if (arr[i][j] > max) // 如果该元素大于最大值
{
max = arr[i][j]; // 更新最大值
k = j; // 记录该元素所在的列
}
}
for (j = 0; j < ROW; j++) // 遍历该元素所在的列
{
if (arr[j][k] < max) // 如果该列中有元素小于最大值
{
flag = 0; // 该元素不是鞍点
break;
}
}
if (flag) // 如果该元素是鞍点
{
printf("鞍点为:arr[%d][%d]=%d\n", i, k, max);
return 0;
}
}
printf("该二维数组中没有鞍点。\n");
return 0;
}
```
代码解释:
1. 定义一个3行4列的二维数组`arr`,并初始化。
2. 遍历每一行,假设该行第一个元素为最大值,假设该行第一个元素为鞍点。
3. 遍历该行每一个元素,如果该元素大于最大值,更新最大值,记录该元素所在的列。
4. 遍历该元素所在的列,如果该列中有元素小于最大值,该元素不是鞍点。
5. 如果该元素是鞍点,输出该元素的位置和值,程序结束。
6. 如果所有元素都不是鞍点,输出“该二维数组中没有鞍点。”,程序结束。
阅读全文