C++的基础问题 菜鸟求教 朋友们帮下

#include<iostream>usingnamespacestd;booladd(inta[],intn);voidmain(){inta[]={22,44,66,... #include<iostream>
using namespace std;
bool add(int a[],int n);
void main()
{
int a[]={22,44,66,88,1,32,64};
bool check=add(a,4);
if(check==true)
cout<<"是顺序数列。\n";
else
cout<<"不是顺序数列。\n";

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

}
return true;
}

不知道哪里错了 想半天想不明白
改成 for(int i=0;i<n;i++)
{
if(a[i]<a[i-1])
{
return false;
}
就对了 为什么啊 有什么区别?
展开
 我来答
agole1989
2012-08-14 · 超过30用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:89.2万
展开全部
你的4是什么意思,比较前4个数字?实际上你比较的是前5个数字,当i = 3 是,i+ 1 = 4,比较数组中是a【3】和a【4】,是88 和 1,当然add函数会返回false!,要想比较前4个应该传入的整数值是3。你该的那个程序也不对,
for(int i=0;i<n;i++)
{
if(a[i]<a[i-1])
{
return false;
}

当i = 0是,你比较的是数组中a【0】和a【-1】的值,然而你的结果是对的,是因为之前你的a数组的前一个内存单元中存的比你a【0】的值,它没被及时销毁,对了只是侥幸的。
香蕉1996
2012-08-14 · TA获得超过132个赞
知道小有建树答主
回答量:120
采纳率:100%
帮助的人:82.9万
展开全部
i=3的时候,a[i+1]是1(a[4]=1啊),a[i]=a[3]=88>1=a[4]=a[i+1]
所以条件a[i]>a[i+1]成立,当然return false;了
而你修改后的代码看看::::
当i=0时,a[i-1]是什么东西(a[-1]???),系统就默认a[i]<a[i-1]为false了
当i=3时,a[i]=88,a[i-1]=66,所以同样a[i]<a[i-1]为false;
最后return true;!!!
最后说一句:你的程序写的好勉强啊
改成 for(int i=1;i<n;i++)
{
if(a[i]<a[i-1])
{
return false;
}
更好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式