你这程序有很多问题,比如说你那查找的for循环就有问题;因为我以前没编过,所以我用C重新帮你编了,你要用voidchazhao(inta[][1000],inth,intl)这样才是对的,我用的是动态数组,你看看吧,不懂的HI我。
#include\"iostream\"
usingnamespacestd;
voidchazhao(int**a,inth,intl)//查找;
{
intc=0;
intmin;
intflag=0;//标志位,1为找到了,0为没找到;
min=a[0][0];
for(inti=0;ih;i)
{
for(intj=0;jl;j)
{
if(a[j]min)
{
min=a[j];
c=j;
}
//找出第i行的最小值;c列;
}
for(j=0;jh;j)
{
if(a[j][c]min)//比较第i行第c列是不是第c列中最大值;
{
flag=0;
break;
}
elseflag=1;
}
if(flag==1)//在第i行找到了
{
cout\"第\"i\"马鞍点为a[\"i\"][\"c\"]=\"a[c]endl;
}
else
{
cout\"第\"i\"行的马鞍点不存在!\"endl;
}
}
}
voidDisplay(int**a,inth,intl)//显示你输入的数组;
{
for(inti=0;ih;i)
{
for(intj=0;jl;j)
{couta[j]\'\\t\';}
coutendl;
}
}
voidmain()
{
inth,l;
int**p;//用动态数组储存,节省空间;
cout\"请输入你查找马鞍点的数组的行和列:\\n\";
cinhl;
p=newint*[h];
for(inti=0;i=h-1;i)
{
p=newint[l];
}
cout\"请输入你要查找马鞍点的数组:\\n\";
for(i=0;ih;i)
{
for(intj=0;jl;j)
{
cinp[j];
}
coutendl;
}
Display(p,h,l);
chazhao(p,h,l);
delete[]p;//释放空间;
}
<h4class=\"ask\">追问
呵呵,谢谢你提供的答案,二维数组的列必须要定,以前没理会清楚,还有循环里,在以i为变量的循环里,不应该再用i做zi循环控制变量了,开始以为有块作用域不怕两个i冲突,结果还是有冲突,改了这两处后程序就没问题了,不过你的程序是动态数组,用到指针,我还没学到,下一章就是了,到时候再来瞧瞧你这答案,嘿嘿,哦,还有个问题,二维数组的两个维都设为1000的话,会运行出错!!!汗,谁会需要两个维都1000的二维数组啊,我真是晕头了.... |