第六周:数组与函数---4-二维数组


程序可以正常运行,可以在程序的中间加一些调试的代码,这样就可以清晰的看出每个变量的值

#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;
}
全部评论

相关推荐

大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务