C++引起的内存错误。请帮忙看下哪错了,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:29:11
//为什么输入十个数会引起内存的出错?
#include<iostream>
using namespace std;
int main()
{void max(int b[10]);
int a[10];
int i,j;
for(i=0;i<=9;i++)
cin>>a[i];
max(a[10]);
for(i=0;i<=9;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
void max(int b[10])
{int i,j,k;
for(i=0;i<=9;i++)
{if(b[i+1]>b[i])
{k=b[i+1];b[i+1]=b[i];b[i]=k;}
for(j=i+1;j<=10;j++)
if(b[j+1]>b[j])
{k=b[j+1];b[j+1]=b[j];b[j]=k;}
}
}
输入下个数后就出现内存出错的那个提示。然后输出的就是十个很长的内存码。我用的是VC++6.0

max函数里循环的问题。
两个for循环次数多了。
改成这样就没事了。
void max(int b[])
{ int i,j,k;
for(i=0;i<9;i++)
{ if(b[i+1]>b[i])
{ k=b[i+1];
b[i+1]=b[i];
b[i]=k;
}
for(j=i+1;j<9;j++)
if(b[j+1]>b[j])
{ k=b[j+1];
b[j+1]=b[j];
b[j]=k;
}
}
}

那里错了?
请贴出错误代码?
你用什么编译器?
是不是数组下标溢出了?

根据你的程序改的

#include<iostream>

using namespace std;
void max(int b[10]);
int main()
{
int a[10];
int i,j;
for(i=0;i<=9;i++) cin>>a[i];
max(a);
for(i=0;i<=9;i++) cout<<a[i]<<" ";
cout<<endl;
return 0;
}
void max(int b[10])
{
int i,j,k;
for(i=0;i<=8;i++)
{
for(j=0;j<=8-i;j++)
if(b[j+1]>b[j])
{
k=b[j+1];b[j+1]=b[j];b[j]=k;
}
}
}