首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于数组的一个小疑点。

2012-04-20 
关于数组的一个小问题。。。找一个二维数组中的鞍点,即在该位置上的元素在该行最大,该列最小,也可能没有鞍点。

关于数组的一个小问题。。。
找一个二维数组中的鞍点,即在该位置上的元素在该行最大,该列最小,也可能没有鞍点。我写了一个,但老是输不出正确结果,请大家看看问题在哪里,怎么改。。。。

#include<stdio.h>
int main()
{
int a[3][4];
int i,j,x,y,t,s,sum=0;
printf("请依次输入十二个数字:");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
  for(i=0;i<3;i++)
{
t=a[i][0];
y=0;
  for(j=0;j<4;j++) //找出某行最大值
  if(t<a[i][j]) y=j;
t=a[i][y];
s=i;
for(x=0;x<3;x++) //判断某行的最大值在某列是不是最小
{
if(t>a[x][y])break;
}  
if(x==3) //如果是,输出位置
{
printf("%d,%d",s,y);
sum++;
}

if(sum=0) printf("该数组无鞍点");
return(0);
}


[解决办法]

C/C++ code
  for(j=0;j<4;j++) //找出某行最大值   if(t<a[i][j]){   y=j;   t=a[i][y];   s=i;}
[解决办法]
#include<stdio.h>

int main()
{
int a[3][4];
int i,j,x,y,t,s,sum=0;

printf("请依次输入十二个数字:\n");
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
}

for(i=0;i<3;i++)
{
t=a[i][0];
y=0;

for(j=0;j<4;j++) //找出某行最大值
{
if(t<a[i][j])
y=j;
t=a[i][y];
s=i;
}

for(x=0;x<3;x++) //判断某行的最大值在某列是不是最小
{
if(t>a[x][y])
break;
}

if(x==3) //如果是,输出位置
{
printf("鞍点所在位置:第%d行,第%d列,鞍点值为:%d\n",s+1,y+1,t);
sum++;
}
}
if(sum=0) 
printf("该数组无鞍点\n");
return(0);
}

热点排行