要求输入4个数. 从小到大排序后输出.
#include <iostream>
using namespace std;
int main()
{
int a[4],temp;
for(int i=0;i<=4;++i)
{
cout<<"输入第 "<<i+1<<"个数: ";
cin>>a[i];
}
for(i=0;i<=4;++i)
{
for(int j=0;j<=4-i;++j)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
cout<<"从小到大 排序后: ";
for(i=0;i<4;++i)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
程序运行内存错误...
你好. 你程序中定义的数组长度为4. 但是输入和冒泡排序时,因为下标的上界为i<=4. 所以会导致下标越界.
以下是修改后的程序:
#include <iostream>
using namespace std;
int main()
{
int a[4],temp;
for(int i=0;i<4;++i)
{
cout<<"输入第 "<<i+1<<"个数: ";
cin>>a[i];
}
for(i=0;i<4;++i)
{
for(int j=0;j<4-i;++j)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
cout<<"从小到大 排序后: ";
for(i=0;i<4;++i)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
第一个for(int i=0;i<=4;++i),这里i到4的时候就溢出了。你的a[4],最多只能到3。
for(i=0;i<=4;++i) 和 for(int j=0;j<=4-i;++j) 也是一样的道理。