C语言:求二维数组中的鞍点:即该位置上的无素在该行最人,在该列最小。如果有鞍点,输出鞍点值,如果没有输出No。
时间: 2024-05-05 09:18:07 浏览: 87
好的,针对您的问题,我可以给您提供以下 C 语言代码:
```c
#include <stdio.h>
#define ROW 3 // 二维数组的行数
#define COL 3 // 二维数组的列数
int main()
{
int a[ROW][COL] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 定义二维数组
int i, j, row, col, flag; // i、j 分别是循环计数器,row、col 分别表示鞍点的行和列,flag 表示是否找到鞍点
flag = 0; // 初始化 flag 值为 0,表示没有找到鞍点
// 查找鞍点
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
int min = a[i][j]; // 假设当前元素为最小值
// 在当前行上找最小值
for (int k = 0; k < COL; k++)
{
if (a[i][k] < min)
{
min = a[i][k];
}
}
// 在当前列上找最大值
int max = a[i][j]; // 假设当前元素为最大值
for (int k = 0; k < ROW; k++)
{
if (a[k][j] > max)
{
max = a[k][j];
}
}
// 如果当前元素既是所在行的最小值,又是所在列的最大值,则该元素为鞍点
if (min == a[i][j] && max == a[i][j])
{
row = i;
col = j;
flag = 1; // 找到鞍点,将 flag 值修改为 1
break;
}
}
if (flag == 1) // 如果已经找到鞍点,则跳出外层循环
{
break;
}
}
// 输出结果
if (flag == 1)
{
printf("鞍点的值为:%d,位于第 %d 行第 %d 列。\n", a[row][col], row + 1, col + 1);
}
else
{
printf("No\n");
}
return 0;
}
```
以上就是根据您提供的要求编写的代码,可以找到二维数组中是否存在鞍点,如果存在则输出鞍点的值,否则输出 "No"。希望能够帮到您!
阅读全文