#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,p,k,max,lie[3]={0},i,j,a[3][3]={{1,5,3},{7,10,4},{4,9,5}};
for(i=0;i<3;i++)
{
for(j=0,p=0;j<3;j++)
{
max=a[i][0],lie[p]=0;
if (a[i][j]>max)
{
max=a[i][j];
lie[p]=j;
}
}
p++;
}
m=0;
while(1)
{
for(k=0;k<3;k++)
{
if(a[k][lie[m]]>max)
{
printf("a[%d][%d]为鞍点,值为%d\n",k,lie,a[k][lie[m]]);
}
}
m++;
if(m==3)
{
break;
}
}
return 0;
}
题主的代码修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,p,k,max,lie[3]={0},i,j,a[3][3]={{1,5,3},{7,10,4},{4,9,5}};
for(i=0;i<3;i++)
{
max=a[i][0];lie[i]=0;
for(j=0;j<3;j++) //for(j=0,p=0;j<3;j++)
{
//max=a[i][0],lie[p]=0;
if (a[i][j]>max)
{
max=a[i][j];
lie[i]=j;
}
} //p++;
}
m=0;i=0; //修改
while(1)
{
max=a[i][lie[m]]; //修改
for(k=0;k<3;k++)
{
if(a[k][lie[m]]<max)
{
max=a[k][lie[m]]; //修改
}
}
if(max == a[i][lie[m]]) //修改
printf("a[%d][%d]为鞍点,值为%d\n",i,lie[m],a[i][lie[m]]);
m++;i++; //修改
if(m==3)
{
break;
}
}
return 0;
}
另一种写法,供参考:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,p,k,max,min,i,j,a[3][3]={{1, 5,3},
{7,10,4},
{4, 9,5}};// lie[3]={0},
int row=0,col=0;
for(i=0;i<3;i++)
{
max=a[i][0];
for(j=0;j<3;j++)
{
if (a[i][j]>max)
{
max=a[i][j];
col = j;
}
}
min=a[0][col];
for(k=0;k<3;k++)
{
if(a[k][col]<min)
{
min=a[k][col];
row=k;
}
}
if(max == min)
printf("a[%d][%d]为鞍点,值为%d\n",row,col,a[row][col]);
}
if(max != min)
printf("Not exist!\n");
return 0;
}