读书人

本人初学者求解释

发布时间: 2013-09-29 11:07:08 作者: rapoo

本人菜鸟,求解释
这是源代码
#include<iostream>//连线棋游戏
using namespace std;

int main()
{
int i,j,x,y;
char p[2][2];

for(i=0;i<=2;i++)//构造棋盘
{
for(j=0;j<=2;j++)
{
p[i][j]='#';
cout<<p[i][j]<<" ";
}
cout<<endl;
}

cout<<"请输入横、纵坐标x,y(x,y必须小于2)"<<endl;//选择要下的棋子的位置
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
if(x>2||y>2)
{
cout<<"x,y必须小于2,请重新输入:"<<endl;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
}
p[x][y]='*';

for(i=0;i<=2;i++)//输出新的棋盘布局
{
for(j=0;j<=2;j++)
{
cout<<p[i][j]<<" ";
}
cout<<endl;
}


}
可结果竟然出现笑脸,结果附图本人初学者,求解释
[解决办法]
您确定是:
char p[2][2];?
越界了吧?
[解决办法]
应该是
p[3][3]
[解决办法]
改成 char p[3][3];
[解决办法]
出现乱码一般是数组越界了,改是 char p[3][3]试试。
[解决办法]
“多一少一”问题占程序员常犯错误的10%以上!

[解决办法]



// char p[2][2]; //你定义的是2*2
char p[3][3];
for(i=0;i<=2;i++)//构造棋盘 //构造的是3*3
{
for(j=0;j<=2;j++) //这里相当与是 3*3的矩阵了,你定义的确实2*2的
{
p[i][j]='#';
cout<<p[i][j]<<" ";
}
cout<<endl;
}

读书人网 >C++

热点推荐