题解代码:
#include<stdio.h>
#define M 100
#define N 100
void get_Matrix(int arr[][N],int m,int n)
{
int i,j;
printf("请输入矩阵的数值:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%3d",&arr[i][j]);
}
}
}
void Matrix(int arr[][N],int m,int n)
{
int i,j,k,xmax,ymax,flag,t=0;
for(i=0;i<m;i++)
{
xmax=0;ymax=0;
for(j=1;j<n;j++)//先记录每行中最大元素的索引
{
if(arr[i][j]>arr[xmax][ymax])
{
xmax=i;ymax=j;
}
}
flag=1;
for(k=0;k<m && flag==1;k++)//与所在列逐个元素进行比较
if(k != xmax && arr[k][ymax] <= arr[xmax][ymax])//取最小那个
{
flag=0;//设置标志
}
if(flag==1)
{
printf("鞍点是arr[%d][%d],值为%d \n",xmax,ymax,arr[xmax][ymax]);
++t;
}
}
if(t==0)printf("没有鞍点。 \n");
}
int main()
{
int i,j,m,n;
int arr[M][N];
printf("请输入矩阵的行数和列数:");
scanf("%d%d",&m,&n);
get_Matrix(arr,m,n);
Matrix(arr,m,n);
}