比较数组大小即返回真假

bool add(int a[],int n)
{
for(int i=1;i<n;i++)
{
if(a[i]<a[i-1])
return false;

else
return true;
}

bool add(int a[],int n)
{
for(int i=0;i<n-1;i++)
{
if(a[i]<a[i+1])
return true;

else
return false;
}

请问他俩有区别吗?为什么输出的结果不一样!

你的程序,不同在于for循环的判断条件
第一个for循环:
for(int i=1;i<n;i++)
{
if(a[i]<a[i-1])
return false;
else
return true;
}
a[1]和a[0],...........a[n-1]和a[n-2]
最后一组比较的是a[n-1]和a[n-2]两个元素的逻辑关系

第二个for循环:
for(int i=0;i<n-1;i++)
{
if(a[i]<a[i+1])
return true;

else
return false;

比较的是:a[0]和a[1]........a[n-2]和a[n-1];

理论上:这两者的情况等效!!!!!没有错误!是不是编译器的问题????有结果的话告诉一声?

==============================================================Mr_Computer追问

我调用的时候 两种方式结果不一样
int a[]={1,2,13,4,5,6,7,8};
if(add(a,8)==true)
cout<<"按照二分的方法得出该数字在数组中的位置是:"<<find1(6,a,8)+1<<endl;
else

cout<<"按照递增的方法得出该数字在数组中的位置是:"<<find(6,a,8)+1<<endl;
}
第一种没有问题,如果把13改成3的话第二种情况输出是二分方法 !不改还是二分方法!
这是为什么?一直输出第一个

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-12
两者的结果正好相反。
一个是:
if(a[i]<a[i-1])
另一个是:
if(a[i]<a[i+1])
第2个回答  2012-08-12
处理==的时候,会不一样吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网