做的井字棋结果判定,输出总是出错而且输出的是000,111 , 222这样的三个字符而非设计的0 ,1, 2
#include
int main()
{
const int size = 3;
int board[size][size];
int i,j;
int result = -1;//-1是平局,0是O赢了,1是X赢了
for ( i=0; i
for ( j=0; j
scanf("%d", &board[i][j]);
}
}
for ( i=0; ix0=0, x1=0, x2=0, x3=0, o0=0, o1=0, o2=0, o3=0;
for ( j=0; jif ( board[i][j] == 1 ) {
x0 ++;
} else {
o0 ++;
}
if ( board[j][i] == 1 ) {//竖线方向
x1 ++;
} else {
o1 ++;
}
if ( board[i][i] == 1 ) {//斜方向1
x2 ++;
} else {
o2 ++;
}
if ( board[i][size-1-i] == 1) {//斜方向2
x3 ++;
} else {
o3 ++;
}
}
if ( x0==size || x1==size || x2==size || x3==size ) {//X赢的判定
result = 1;
}
if ( o0==size || o1==size || o2==size || o3==size ) {//O赢的判定
result = 0;
}
printf("%d", result);//输出出结果
}
return 0;
}
#include<stdio.h>
int main()
{
const int size = 3;
int board[size][size];
int i,j;
int x,o;
int result = -1;
for(i=0;i<size;i++){
for(j=0;j<size;j++)
{
scanf("%d",&board[i][j]);
}
}
for(i=0;i<size&&result == -1;i++)
{
x=o=0;
for(j=0;j<size;j++)
{
if(board[i][j]==1)
x++;
else
o++;
}
if(o== size){
result = 0;
}
else if(x== size){
result = 1;
}
}/*检查行*/
if(result==-1)
{
for(j=0;j<size;j++)
{
x=o=0;
for(i=0;i<size;i++)
{
if(board[j][i]==1)
{
x++;
}
else
{
o++;
}
if(o==size){
result =0;
}
else if (x==size)
{
result =1;
}
}
}
}/*检查列*/
x=o = 0;
if(result == -1)
{
x=o = 0;
for(i=0;i<size;i++)
{
if(board[i][i] == 1)
{
x++;
}
else if (board[i][i] == 0)
{
o++;
}
if(o==size)
{
result = 0;
}
else if (x==size)
{
result = 1;
}
}
} /*检查正对角线*/
if(result == -1)
{
x=o = 0;
for(i=0;i<size;i++)
{
if(board[i][size-i-1]==1)
{
x++;
}
else
{
o++;
}
}
if(x==size)
{
result = 1;
}
else if(o==size)
{
result = 0;
}
}
switch(result)
{
case 0:
printf("0 win");
break;
case 1:
printf("x win");
break;
case -1:
printf("No win");
}
return 0;
}