按了按键之后没有交换
```c++
#include
#include
#define N 3
using namespace std;
class game{
private:
int a[N][N] = {0};
int i, j;
public:
void set(){
// int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
cin >> a[i][j];
}
}
}
void display(){
// int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
if(a[i][j] == 0)
{
cout << " ";
}
else
{
cout << a[i][j] << " ";
}
}
cout << "\n";
}
}
void move(){
char in = 0;
// int i, j;
char t = 0;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
if(a[i][j] == 0)
{
break;
}
}
}
cin >> in;
if(in == 'a'){
t = a[i][j];
a[i][j] = a[i][j+1];
a[i][j+1] = t;
}
else if(in == 'd'){
t = a[i][j];
a[i][j] = a[i][j-1];
a[i][j-1] = t;
}
else if(in == 'w'){
t = a[i][j];
a[i][j] = a[i-1][j];
a[i-1][j] = t;
}
else if(in == 's'){
t = a[i][j];
a[i][j] = a[i+1][j];
a[i+1][j] = t;
}
}
};
int main()
{
game a;
a.set();
a.display();
while(1){
a.move();
a.display();
//TODO
}
return 0;
}
```
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
if(a[i][j] == 0)
{
break;//没有退出循环
}
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:根据自身传递size大小来分配储存空间
template <class T>
inline Stack<T>::Stack(int size)
{
this ->maxSize = size;
this ->top = -1;
this ->elements = new T[this ->maxSize];
if(elements==NULL){
cout<<"动态分配错误!"<<endl;
}
}