三字棋遇到的小问题 赋值方面

#include 
#include 
#include 
#define R 3
#define C 3
void game_start()
{
    printf("#################################################################\n");
    printf("#############################开始游戏############################\n");
    printf("##请输入:                     1/0                               \n");
    printf("############1.开始    ###################0.结束    ##############\n");
    printf("#################################################################\n");
    printf("#################################################################\n");
    printf("#################################################################\n");
    printf("#################################################################\n");


}
void gezi(int x[R][C])
{
    int i, j, k;
    for (i = 0; i < R; i++)
    {
        for (j = 0; j < C; j++)
        {
            if (x[i][j] == 0)
                printf("   |");
            else if (x[i][j] ==-1)
                printf(" * |");
            else if (x[i][j]==1)
                printf(" # |");
        }
        printf("\n");
        for (k = 0; k < C; k++)
            printf("----");
        printf("\n");
    }
}
void computer(int arr[R][C])
{
    srand(time(NULL));
    do
    {    
        if (arr[rand() % (R-1)][rand() % (C-1)] == 0 )                 //目前有问题
            arr[rand() % (R-1)][rand() % (C-1)] = -1;
    } while (arr[rand() % (R-1)][rand() % (C-1)] !=0 );
}
void game()
{
    int x, y;
    int arr[R][C] = { 0 };
    do
    {
        do
        {

            printf("请输入棋子的坐标:x,y          ");          scanf("%d%*c%d", &x, &y);
            if(arr[x - 1][y - 1] !=0)
                printf("这个格子有棋子了\n");
        }while (arr[x - 1][y - 1] !=0);
        arr[x - 1][y - 1] = 1;
    computer(arr);
    gezi(arr);
    } while (1);
}
int main()
{
    int a;
    do
    {
        game_start();
        scanf("%d", &a);
    } while (a == 0);
    game();
    
}

我是想 让玩家输入# 电脑输入*
创建一个RC的数组初始化为零
1为# -1为

玩家输入这方面可能没啥问题 就是电脑这里我想利用时间戳来给数组的元素值附上-1 然而 我测试出的有时候可能-1的值会替换1的值
我自己不会函数内部的监控 所以找不出来问题
这个程序也没做完 输赢的判定还没做
先解决打印的这个问题吧

#define _CRT_SECURE_NO_WARNINGS 1
 
#include "game.h"
 
//菜单函数
void menu()
{
    printf("*******************************************\n");
    printf("************** 1. play ********************\n");
    printf("************** 0. exit ********************\n");
    printf("*******************************************\n");
}
 
void game()
{
    char ret = 0;
    //数据的存储需要一个3*3的二维数组
    char board[ROW][COL] = { 0 };
    init_board(board, ROW, COL);
    display_board(board, ROW, COL);
    //玩游戏
    while (1)
    {
        player_move(board, ROW, COL);
        display_board(board, ROW, COL);
 
        ret = is_win(board, ROW, COL);
        if (ret != 'C')
            break;
 
        computer_move(board, ROW, COL);
        display_board(board, ROW, COL);
 
        ret = is_win(board, ROW, COL);
        if (ret != 'C')
            break;
 
    }
    if (ret == '*')
    {
        printf("玩家赢\n");
    }
    else if (ret == '#')
    {
        printf("电脑赢\n");
    }
    else if (ret == 'Q')
    {
        printf("平局\n");
    }
 
}
 
int main()
{
    int input = 0;
    srand((unsigned int)time(NULL));//生成随机数
    do
    {
        menu();
        printf("请输入选择>");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("游戏结束!\n");
            break;
        default:
            printf("输入错误,请重新输入>\n");
            break;
        }
    } while (input);
 
    return 0;
}