程序可以正常运行,可以在程序的中间加一些调试的代码,这样就可以清晰的看出每个变量的值
#include<stdio.h>
int main(){
const int size = 3;
int board[size][size];
int i,j;
int numOfX;
int numOfO;
int result = -1; // -1:没人赢,1:X赢,0:O赢
//读入矩阵
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
scanf("%d",&board[i][j]);
}
}
printf("\n");
//检查行
for( i=0; i < size && result== -1;i++)
{
numOfO = numOfX = 0;
for(j=0;j<size;j++)
{
if(board[i][j]==1)
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if (numOfO == size )
{
result=0;
}else if(numOfX == size)
{
result =1;
}
}
// 这个两重循环按行逐一数出了 O 和 X 的个数
printf("numOfX=%d\n",numOfX);//x为 1
printf("numOfO=%d\n",numOfO);//O为 0
printf("行结束result=%d\n",result);
printf("\n");
//检查列
if(result == -1)
{
for(j=0; j < size && result== -1;j++)
{
numOfO = numOfX = 0;
for (i=0;i<size;i++)
{
if(board[i][j] == 1)
{
numOfX ++;
}
else
{
numOfO ++;
}
}
}
if( numOfO == size )
{
result=0;
}
else if (numOfX == size )
{
result=1;
}
}
printf("numOfX=%d\n",numOfX);//x为 1
printf("numOfO=%d\n",numOfO);//O为 0
printf("列结束result=%d\n",result);
printf("\n");
//检查对角线
if(result == -1)
{
numOfO = numOfX =0;
// 检查正对角线 \
for(i=0;i<size;i++)
{
if(board[i][i] == 1)
{
numOfX ++;
}
else
{
numOfO ++;
}
}
if( numOfO == size)
{
result =0;
}else if(numOfX == size)
{
result =1;
}
printf("numOfX=%d\n",numOfX);//x为 1
printf("numOfO=%d\n",numOfO);//O为 0
printf("正对角线结束result=%d\n",result);
printf("\n");
// 检查反对角线 /
numOfO = numOfX =0;
for(i=0;i<size;i++)
{
if(board[i][size-i-1] == 1)
{
numOfX ++;
}else
{
numOfO ++;
}
}
if( numOfO == size)
{
result =0;
}else if(numOfX == size)
{
result =1;
}
printf("numOfX=%d\n",numOfX);//x为 1
printf("numOfO=%d\n",numOfO);//O为 0
printf("反对角线结束result=%d\n",result);
printf("\n");
}
printf("最终result=%d\n",result);
printf("\n");
if(result==0)
{
printf("最终O赢\n");
}else if(result==1)
{
printf("最终X赢\n");
}else if(result==-1)
{
printf("最终没人赢\n");
}
return 0;
}