用c语言编写找出一个二维数组中的鞍点,鞍点即该位置上的元素在该行最大,在该列上最小。当然也可能没有鞍点。 输入数据格式:"%d" 首先读入两个整数n,m代表二维数组的行和列 其中1≤n,m≤10 然后读入n×m个int类型的数,作为二维数组中的元素。 所有数字之间只有空格或者换行 所有数字均不相同 鞍点最多只可能有一个,你能想明白为什么吗? 输出格式要求: "第%d行,第%d列的%d是鞍点\n" "矩阵中无鞍点!\n"
时间: 2024-02-23 12:00:28 浏览: 101
c语言寻找二维数组中的鞍点
以下是用 C 语言编写的程序,可以找出一个二维数组中的鞍点,如果没有鞍点则输出“矩阵中无鞍点!”:
```c
#include <stdio.h>
int main()
{
int n, m, a[10][10], i, j, k, max, min, flag = 0;
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
}
for(i = 0; i < n; i++)
{
max = a[i][0];
for(j = 0; j < m; j++)
{
if(a[i][j] > max)
{
max = a[i][j];
}
}
for(j = 0; j < m; j++)
{
if(a[i][j] == max)
{
min = a[0][j];
for(k = 0; k < n; k++)
{
if(a[k][j] < min)
{
min = a[k][j];
}
}
if(a[i][j] == min)
{
printf("第%d行,第%d列的%d是鞍点\n", i + 1, j + 1, a[i][j]);
flag = 1;
}
}
}
}
if(flag == 0)
{
printf("矩阵中无鞍点!\n");
}
return 0;
}
```
程序的基本思路是,先读入二维数组元素,然后逐行查找每行的最大值,再逐个比较每个元素是否为该行最大值,如果是则在列中查找最小值,如果该元素也是该列的最小值,则输出该元素是鞍点,并将标记变量 flag 设为 1。最后判断一下 flag 是否为 0,如果是则输出矩阵中无鞍点。
阅读全文