用c语言找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。
时间: 2024-05-13 22:14:55 浏览: 163
C语言程序设计-求一个二维数组中的鞍点
5星 · 资源好评率100%
以下是用C语言实现找出具有m行n列二维数组Array的“鞍点”的代码:
```c
#include <stdio.h>
#define M 10
#define N 10
int main()
{
int Array[M][N];
int m, n, i, j, k, max, min, flag;
printf("请输入二维数组的行数和列数,用空格隔开:\n");
scanf("%d %d", &m, &n);
printf("请输入二维数组的元素,用空格隔开:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &Array[i][j]);
}
}
flag = 0; // 标记是否找到鞍点
for (i = 0; i < m; i++)
{
max = Array[i][0]; // 每行最大值
for (j = 1; j < n; j++)
{
if (Array[i][j] > max)
{
max = Array[i][j];
}
}
for (j = 0; j < n; j++)
{
if (Array[i][j] == max)
{
min = Array[0][j]; // 每列最小值
for (k = 1; k < m; k++)
{
if (Array[k][j] < min)
{
min = Array[k][j];
}
}
if (Array[i][j] == min)
{
printf("鞍点位置为:(%d,%d),值为:%d\n", i, j, Array[i][j]);
flag = 1;
}
}
}
}
if (flag == 0)
{
printf("该二维数组中不存在鞍点!\n");
}
return 0;
}
```
代码思路:
1. 定义二维数组Array,以及变量m、n、i、j、k、max、min和flag;
2. 输入二维数组的行数和列数,以及每个元素的值;
3. 依次遍历每行,找到每行的最大值max,然后再遍历每列,找到每列的最小值min;
4. 如果某个元素的值既等于max,又等于min,则该元素是鞍点,输出该位置和值,并将flag标记为1;
5. 如果遍历完整个二维数组后,flag仍为0,则表示没有找到鞍点,输出相应的提示信息。
注意:
1. 代码中的M和N分别代表二维数组的最大行数和最大列数,可以根据需要自行更改;
2. 代码中的scanf和printf语句可以根据需要自行修改,比如可以添加提示信息、改变输出格式等。
阅读全文