编写一个函数void ad(int a[M][N])找出一个M行N列(M、N为符号常量)的二维数组a中的“鞍点”。在主函数中输入二维数组a的值,并将它作为实参调用ad函数。所谓“鞍点”是指该位置上的元素在该行上最大,而在该列上最小(一个二维数组中可能没有鞍点)。假设二维数组a中的所有整数都是不相等的。
时间: 2024-02-15 08:05:03 浏览: 92
以下是实现该功能的代码:
```c++
#define M 3
#define N 4
#include<iostream>
using namespace std;
void ad(int a[M][N])
{
int i, j, k, flag;
for (i = 0; i < M; i++)
{
int max_row = a[i][0];
int max_col = 0;
for (j = 1; j < N; j++)
{
if (a[i][j] > max_row)
{
max_row = a[i][j];
max_col = j;
}
}
flag = 1;
for (k = 0; k < M; k++)
{
if (a[k][max_col] < max_row)
{
flag = 0;
break;
}
}
if (flag)
{
cout << "鞍点为:" << max_row << endl;
return;
}
}
cout << "未找到鞍点" << endl;
}
int main()
{
int a[M][N];
cout << "请输入" << M * N << "个整数:" << endl;
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
cin >> a[i][j];
}
}
ad(a);
return 0;
}
```
主函数中先输入二维数组a的值,然后将其作为实参调用ad函数。在ad函数中,我们先遍历每一行,找出该行的最大值及其所在的列。然后再遍历每一列,判断该列的最小值是否等于该行的最大值,如果是,则找到了鞍点,输出即可。如果遍历完成后仍未找到鞍点,则输出未找到鞍点。
阅读全文
相关推荐


















