当前位置: 代码迷 >> C语言 >> [求助]
  详细解决方案

[求助]

热度:158   发布时间:2005-05-22 21:28:00.0
[求助]
我在学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");
}
}
输入数据时,必须多输入四个,而这多输的四个数据并没用处。且输完前四个数据后,按回车后直接转到下一行而不象后面一样会空一行。
这是怎么回事?
多谢高手指点
搜索更多相关的解决方案: 编程  二维  numbers  couple  最大值  

----------------解决方案--------------------------------------------------------
scanf("%d ",&a[i][j]);"%d " d后面的空格去掉就没事了
----------------解决方案--------------------------------------------------------
  相关解决方案