PTA井字棋 AC不了请大佬康康哪错了?

井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。(来自百度百科)

   请你判断后手者是否存在任意三个标记形成一条直线?

输入格式:
第一行输入一个整数t(1<=t<=1000)代表t组输入。接下来每组输入一个井字棋游戏局面。

输出格式:
若后手者存在任意三个标记形成一条直线输出"yes",否则输出"no"。
输入样例:
在这里给出一组输入。例如:

2
OOO
XXX
OOO

OOO
XXO
OXX

输出样例:
在这里给出相应的输出。例如:
yes
yes

我的代码如下:

#include<stdio.h>
int main()
{
    int i,n,j,k,temp1,temp2,temp3,temp4,m;
    char a[10][10];

    while(scanf("%d",&n)!=EOF)
    {
    getchar();
    for(i=0;i<n;i++)
    {
        m=0;
        temp3=0;
        temp4=0;
        for(j=0;j<3;j++)
        {
            gets(a[j]);
        }

        for(j=0;j<3;j++)
        {
             temp1=0;
             temp2=0;
            for(k=0;k<3;k++)
            {
                if(a[j][k]=='O' || a[j][k]!='O' && a[j][k]!='X')
                {
                    temp1++;
                }
                if(a[k][j]=='O' || a[k][j]!='O' && a[k][j]!='X')
                {
                    temp2++;
                }
            }
            if(temp1==3 || temp2==3)
            {
                m=1;
                break;
            }
            if(a[j][j]=='0' || a[j][j]!='O' && a[j][j]!='X')
            {
                temp3++;
            }
            if(a[j][2-j]=='O' || a[j][2-j]!='O' && a[j][2-j]!='X')
            {
                temp4++;
            }
        }

        if(temp4==3 || temp3==3 || m==1)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
        getchar();
    }
    }

    return 0;
} 

各位大佬可否帮我康康哪错了

https://blog.csdn.net/JerryLife/article/details/81385766?utm_source=blogxgwz1