编程论坛
注册
登录
编程论坛
→
C语言论坛
C语言 自定义函数找出二维矩阵的鞍点,如果没有鞍点打印相应信息
学会代码
发布于 2020-12-08 22:32, 1663 次点击
自定义函数找出二维矩阵的鞍点,如果没有鞍点打印相应信息
2 回复
#2
风过无痕1989
2020-12-08 23:42
回复 楼主 学会代码
程序代码:
#include
<stdio.h>
#define
M 3
//
最大接收M行N列的数组,这里是10*10,可修改。
#define
N 3
int
main()
{
int
a[M][N], b[N];
int
i, j, k, s =
0
, max, min, count =
0
;
printf(
"
输入数组元素:
"
);
for
(i =
0
;i < M;i++)
//
输入数组
{
for
(j =
0
;j < N;j++)
{
scanf(
"
%d
"
, &a[i][j]);
}
}
//
打印数组
for
(i =
0
;i < M;i++)
{
for
(j =
0
;j < N;j++)
{
printf(
"
%5d
"
, a[i][j]);
}
printf(
"
\n
"
);
}
//
查找判断鞍点
for
(i =
0
;i < M;i++)
{
max = a[i][
0
];
for
(j =
0
;j < N;j++)
//
找第i行最大值
if
(a[i][j] > max)
max = a[i][j];
s =
0
;
for
(j =
0
;j < N;j++)
//
将最大值所在的列存入数组b[s]中
if
(a[i][j] = max)
{
b[s] = j;
s++;
//
s的值就是最大值的个数
}
min = max;
for
(i =
0
;i < s;i++)
//
有几个最大值循环判断几次
{
for
(k =
0
;k < M;k++)
//
判断这个行最大值是不是列最小
{
if
(min > a[k][b[i]])
{
break
;
}
}
if
(k == M)
//
输出,count为鞍点个数
printf(
"
鞍点为第%d行第%d列的%d\n
"
, j +
1
, b[i] +
1
, a[j][b[i]]);
count++;
}
}
printf(
"
该二维数组没有鞍点\n
"
);
}
#3
风过无痕1989
2020-12-08 23:48
回复 楼主 学会代码
你若一定要在函数中查找鞍点,将注释指明的“查找鞍点”开始,作为自定义函数即可
我最近比较忙,改写容易,主要是改写之后,没有时间去验证。你自己改一下,不难的,相信自己,你一定行
1