|
楼主 |
发表于 2004-12-7 23:33:31
|
显示全部楼层
小弟我求得了一个真确的源代码,但是有些地方不是很明白!清兄弟们指教指教!:)
[code:1]#include "stdio.h"
#define M 3
#define N 3
int andian(int b[M][N])
{ int i,j,m,Row,Lie,dian;
for(i=0;i<M;i++)//遍历所有行
{
dian=b[i][0];
Row=i;
for(j=1;j<N;j++)
if(b[i][j]>dian)//找到一行中的最大值
{
dian=b[i][j];
Lie=j;
}
for(m=0;m<M;m++)//判断一行中的最大值是否是所在列的最小值
if(b[m][Lie]<dian)
break;
if(m==M)
{
printf("鞍点在第%d行,第%d列\n",Row+1,Lie+1);
return (dian);
}
}
printf("没有鞍点\n");
return 0;
}
main()
{
int a[M][N],i,j,x;
printf("请输入一个三行三列的数组\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
x=andian(a);
printf("%d\n",x);
}[/code:1]
第一个不明白的地方是:
[code:1] for(m=0;m<M;m++)//判断一行中的最大值是否是所在列的最小值
if(b[m][Lie]<dian)
break;
if(m==M)
{
printf("鞍点在第%d行,第%d列\n",Row+1,Lie+1);
return (dian);
}[/code:1]
为什么第一个if判断的是b[m][Lie]<dian而第二个if却判断的是m==M??
第二个不明白的地方是:
[code:1] for(i=0;i<M;i++)//遍历所有行
{
dian=b[i][0];
Row=i;
for(j=1;j<N;j++)
if(b[i][j]>dian)//找到一行中的最大值
{
dian=b[i][j];
Lie=j;
}
for(m=0;m<M;m++)//判断一行中的最大值是否是所在列的最小值
if(b[m][Lie]<dian)
break;
if(m==M)
{
printf("鞍点在第%d行,第%d列\n",Row+1,Lie+1);
return (dian);
}
}
printf("没有鞍点\n");
return 0;
}[/code:1]
在这个大循环中,那个break是结束的哪个循环呀?:)
就是这两个疑问,谢谢指教!:) |
|