C语言循环判断井字棋赢家

#include 
int main()
{
   int a[3][3],i,j,result=-1;
//输入数据
for(i=0;i<3;i++)
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);  //按行输入,空棋格则输入不为1或0的数
//判断行、列和对角线
    for(i=0;i<3;i++)
   {
    //行
        {
            for(j=0;j<3;j++)
            {
                int numX=0,numO=0;
                if(a[i][j]==1)
                numX++;
                else if(a[i][j]==0)
                numO++;
            if(numX==3){result=1;goto out;}
            else if(numO=3){result=0;goto out;}
            }
        }
    //列
        {
            for(j=0;j<3;j++)
            {
                int numX=0,numO=0;
                if(a[j][i]==1)
                numX++;
                else if(a[j][i]==0)
                numO++;
            if(numX==3){result=1;goto out;}
            else if(numO=3){result=0;goto out;}
            }
        }
    //对角线
        {
            int numX=0,numO=0;
            if(a[i][i]==1)numX++;
            else if(a[i][i]==0)numO++;
            if(numX==3){result=1;goto out;}
            else if(numO=3){result=0;goto out;}
        }
   }
//输出结果
 out:if(result==-1)printf("没有人赢");
     else if(result==1)printf("X赢");
     else if(result==0)printf("O赢");
   return 0;
}


大lao们帮我看看哪里错了呗

修改如下,供参考:

#include <stdio.h>
int main()
{
    int a[3][3], i, j, result = -1, numX = 0, numO = 0, numX1 = 0, numO1 = 0;
    //输入数据
    for (i = 0; i < 3; i++)
        scanf("%d%d%d", &a[i][0], &a[i][1], &a[i][2]);  //按行输入,空棋格则输入不为10的数
        //判断行、列和对角线
    for (i = 0; i < 3; i++)
    {
        //行
        for (j = 0, numX = 0, numO = 0; j < 3; j++) //修改
        {
            if (a[i][j] == 1)
                numX++;
            else if (a[i][j] == 0)
                numO++;
        }  //修改
        if (numX == 3) { result = 1; goto out; }
        else if (numO == 3) { result = 0; goto out; } //else if (numO = 3)
        //列
        for (j = 0, numX = 0, numO = 0; j < 3; j++) //修改
        {
            if (a[j][i] == 1)
                numX++;
            else if (a[j][i] == 0)
                numO++;
        }  //修改
        if (numX == 3) { result = 1; goto out; }
        else if (numO == 3) { result = 0; goto out; } //else if (numO = 3)
    }
    numX = 0, numO = 0, numX1 = 0, numO1 = 0;
    for (i = 0; i < 3; i++)
    {
        //对角线
        for (j = 0; j < 3; j++)
        {
            if (i == j) {
                if (a[i][j] == 1)
                    numX++;
                else if (a[i][j] == 0)
                    numO++;
            }
            if (i + j == 2) {
                if (a[i][j] == 1)
                    numX1++;
                else if (a[i][j] == 0)
                    numO1++;
            }
        }
    }
    if (numX == 3 || numX1 == 3) { result = 1; goto out; }
    else if (numO == 3 || numO1 == 3) { result = 0; goto out; } //else if (numO = 3)
    //输出结果
    out:if (result == -1)printf("没有人赢");
        else if (result == 1)printf("X赢");
        else if (result == 0)printf("O赢");
    return 0;
}

你把int numX=0,numO=0;定义放到循环里面,它永远不是0就是1,永远也不会等于3呀

报啥错呀