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;
}
就对了 为什么啊 有什么区别? 展开
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;
}
就对了 为什么啊 有什么区别? 展开
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】的值,它没被及时销毁,对了只是侥幸的。
for(int i=0;i<n;i++)
{
if(a[i]<a[i-1])
{
return false;
}
当i = 0是,你比较的是数组中a【0】和a【-1】的值,然而你的结果是对的,是因为之前你的a数组的前一个内存单元中存的比你a【0】的值,它没被及时销毁,对了只是侥幸的。
展开全部
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;
}
更好
所以条件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;
}
更好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询