[求助]
我在学C语言时遇到这么一道题:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没鞍点。我编程如下:
注:
dot代表鞍点的值
couple=1代表此行至少有两个相等的最大值
yes=1代表有鞍点
main()
{
int a[4][4],i,j,k,dot,column,couple,yes=0;
printf("input 16 numbers:\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
scanf("%d ",&a[i][j]);
printf("\n");
}
for(i=0;i<4;i++)
{
dot=a[i][0];column=0;
for(j=1;j<4;j++)
{
if(a[i][j]>dot)
{dot=a[i][j];column=j;couple=0;}
if(a[i][j]==dot)
couple=1;
}
loop:for(j=0,k=1;j<4;j++)
if(a[j][column]<a[i][column])
{k=0;break;}
if(k==1)
{yes=1;printf("dot=%d ,row=%d, column=%d\n",dot,i,column);}
if(couple==1)
for(j=column+1;j<4;j++)
if(a[i][j]==dot)
{column=j;goto loop;}
}
if(yes==0)
printf("no dot\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
输入数据时,必须多输入四个,而这多输的四个数据并没用处。且输完前四个数据后,按回车后直接转到下一行而不象后面一样会空一行。
这是怎么回事?
多谢高手指点
----------------解决方案--------------------------------------------------------
scanf("%d ",&a[i][j]);"%d " d后面的空格去掉就没事了
----------------解决方案--------------------------------------------------------