upupgo_ 2023-07-21 16:54 采纳率: 33.3%
浏览 24

关于#三子棋代码#的问题,显示标识符未声明,如何解决?

三子棋代码 显示未申明标识符,可是明明定义了呀

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define row 3
#define col 3
void menu()
{
      printf("*******************\n");
      printf("**1.paly   0.exit**\n");
      printf("*******************\n");
}
void game()
{
   char arr[row][col]={0};/*空格填充*/
   srand((int)time(NULL));
   int i=0;
   int j=0;
   int a=0;
   int b=0;
   int m=0;
   int n=0;
   int t=0;
   /*打印棋盘*/
   for(i=0;i<row;i++)
   {
       /*打印一行内容*/
       for(j=0;j<col;j++)
         {
             printf(" %c ",arr[i][j]);
             if(j<col-1)
             printf("|");
         }
       printf("\n");
       if(i<row-1)/*最后一行不需---|*/
       {
       /*打印第二行内容*/
           for(j=0;j<col;j++)
              {
                 printf("---");
                 if(j<col-1)
                 printf("|");
               }
           printf("\n");
       }
    }
 while(1)
 {
   /*玩家输入坐标*/
   while(1)
   {
    printf("请输入坐标:");
    scanf("%d%d",&a,&b);
       if((a>0&&a<=row)&&(b>0&&b<=col)&&(arr[a-1][b-1]==' '))
         {
            arr[a-1][b-1]='*';
            break;
         }
      
   }
    /*判断输赢*/
   for(m=0;m<row;m++)
    {
       if((arr[m][0]==arr[m][1]==arr[m][2])&&arr[m][0]!=' ')
           t=arr[m][0];
    }
    for(m=0;m<row;m++)
    {
       if((arr[0][m]==arr[1][m]==arr[2][m])&&arr[0][m]!=' ')
           t=arr[0][m];
    }
       if((arr[0][0]==arr[1][1]==arr[2][2])&&arr[0][0]!=' ')
           t=arr[m][0];
       if((arr[0][2]==arr[1][1]==arr[2][0])&&arr[0][0]!=' ')
           t=arr[0][2];
       for(m=0;m<row;m++)
       {
           for(n=0;n<col;n++)
            {
             if(arr[m][n]!=' ')
                 {
                      t=1; 
                  }
            }
       }

    if(t=='*')
    {
        printf("恭喜你赢啦");
       break;
    }

    else if(t=='#')
    {
        printf("输了");
        break;
    }

    else if(t==1)
    {
        printf("平局");
        break;
    }

   /*电脑输入坐标*/
   while(1)
    {
        printf("电脑输入坐标:");
        a=rand()%row;
        b=rand()%col;
        if(arr[a][b]==' ')
        {
            arr[a][b]='#';
            printf("%c",arr[a][b]);
            break;
        }

    }
  /* 判断输赢*/
    for(m=0;m<row;m++)
    {
       if((arr[m][0]==arr[m][1]==arr[m][2])&&arr[m][0]!=' ')
           t=arr[m][0];
    }
    for(m=0;m<row;m++)
    {
       if((arr[0][m]==arr[1][m]==arr[2][m])&&arr[0][m]!=' ')
           t=arr[0][m];
    }
       if((arr[0][0]==arr[1][1]==arr[2][2])&&arr[0][0]!=' ')
           t=arr[m][0];
       if((arr[0][2]==arr[1][1]==arr[2][0])&&arr[0][0]!=' ')
           t=arr[0][2];
       for(m=0;m<row;m++)
       {
           for(n=0;n<col;n++)
            {
             if(arr[m][n]!=' ')
                 {
                      t=1;
                  }
            }
       }
    if(t=='*')
    {
        printf("恭喜你赢啦");
       break;
    }

    else if(t=='#')
    {
        printf("输了");
        break;
    }

    else if(t==1)
    {
        printf("平局");
        break;
    }

 }

}

int main()
{
    int input=0;    
    menu();
    printf("请输入(1/0):");
    do
    {
    scanf("%d",&input);
    switch(input)
    {
    case 1:game();
        break;
    case 0:printf("退出游戏");
        break;
    default:printf("请重新输入:");
        break;
    }

    }while(input);

    


}

img

  • 写回答

2条回答 默认 最新

  • 爱编程的小芒果 2023-07-21 18:12
    关注

    为啥在我的编译器里,就不报错呢?

    评论

报告相同问题?

问题事件

  • 创建了问题 7月21日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价