花开副富贵 2023-01-05 22:54 采纳率: 66.7%
浏览 37
已结题

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

#include <stdio.h>
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们帮我看看哪里错了呗

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-01-06 11:39
    关注

    修改如下,供参考:

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月5日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。