#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define N 3
int main(void)
{
int num[N][N] = { 1,2,3,4,5,6,7,8,9 }, flag = 0, max, min, row, col;//标志变量 行最大 列最小 列最小对应行标 行最大对应列标
min = num[0][0];
for (int i = 0; i < N; i++) {//行方向最大值列标 定1找1
max = num[i][0];
min = num[i][0];
for (int m = 0; m < N; m++) {
if (num[i][m] > max) {
max = num[i][m];
col = m;
}
}
for (int m = 0; m < N; m++) {//列最小行标
if (num[m][col] < min) {
min = num[m][col];
row = m;
}
}
if (row == i) {//最小对应行标==当前行标成立
printf("坐标(%d,%d)为鞍点\n", row + 1, col + 1);
flag++;
}
}
if (flag == 0) {
puts("无鞍点");
}
#include<stdio.h>
#define M 3
#define N 4
int main()
{
int max, min, rowindex, colindex, flag = 0;
int array[M][N];
printf("请输入%d行%d列的数组:\n", M, N);
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
scanf("%d", &array[i][j]);
}
for (int i = 0; i < M; ++i)
{
// 找到i行上最大的元素,记录该元素在列号colindex
max = array[i][0];
for (int j = 0; j < N; ++j)
{
if (array[i][j] > max)
{
max = array[i][j];
colindex = j;
}
}
// 找max所在列colindex上最小的元素,并记录其所在的行
min = array[0][colindex];
for (int j = 0; j < M; ++j)
{
if (array[j][colindex] < min)
{
min = array[j][colindex];
rowindex = j;
}
}
// 如果最小元素与最小元素相同,并且最小元素也在第i行,则为鞍点
if (max == min && i == rowindex)
{
flag = 1;
printf("鞍点为:%d行%d列的元素%d", rowindex, colindex, max);
break;
}
}
if (0 == flag)
printf("没有鞍点");
return 0;
}
登录后提交答案