求大神见见八皇后的程序,为何运行完后会程序中止

求大神看看八皇后的程序,为何运行完后会程序中止
#include<iostream>

using namespace std;

class QUEEN
{
private:
int result;
int chess[8];
public:
QUEEN(){result=1;}
int CheckQueen(int n);
void PutQueen(int n);
void ShowQueen();
};

int QUEEN::CheckQueen(int n)
{
for(int i=1;i<=n-1;i++)
{
if(chess[n]==chess[i]+(n-i)||chess[n]==chess[i]-(n-i)||chess[n]==chess[i])
{
return 0;
}
}
return 1;
}

void QUEEN::PutQueen(int n)
{
int i;
if(n<=8)
{
for(i=1;i<=8;i++)
{
chess[n]=i;
if(CheckQueen(n)==1)
{
if(n==8)
ShowQueen();
else
PutQueen( n+1 );
}

}

}
}

void QUEEN::ShowQueen()
{
cout<<" method "<<result<<endl;
for(int i=1;i<=8;i++)
{
cout<<"("<<i<<") : "<<chess[i]<<endl; 
}
result++;
}

void main()
{
  QUEEN a;
a.PutQueen(1);

}



------解决方案--------------------
越界了,C++数组下标重0开始算,
int chess[8];
最大为chess[7],
你程序里用了chess[8]

把int chess[8];
改为int chess[9];
就可以了


------解决方案--------------------
基本就是1楼说的那样。你数组长度是8,而你程序里使用的却是从第二个元素到第九个元素。要么改成int chess[9];
要么使用的时候从chess[0]到chess[7],不要用chess[8]