这个程序闪退了是怎么回事?求解

#include
using namespace std;
class MOVE{
float array[20];
int n;
public:
MOVE(float b[],int m);
void average();
void print();
};
MOVE::MOVE(float b[],int m)
{
int i;
n=m;
for(i=0;i<m;i++)
array[i]=b[i];
}
void MOVE::average()
{
int i,x;
float a=0;
for(i=0;i<n;i++)
a+=array[i];
a/=n;
cout<<"平均值为"<<a<<endl;
float ff[20];
for(i=0,x=0;i<n;i++)
if(array[i]<a)
{
ff[x]=array[i];
x++;
}
for(i=0;i<n;i++)
if(array[i]>a)
{
ff[x]=array[i];
x++;
}
for(i=0;i<n;i++)
array[i]=ff[i];
}
void MOVE::print()
{
int q,p=1;
for(q=0;q<n;q++)
{
cout<<array[q]<<'\t';
if(p%5==0)cout<<'\n';
p++;
}
}
void main()
{
float b[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};
int m=9;
MOVE aa(b,m);
aa.average();
aa.print();
}

aa.print();后面加一句
system("pause");