为什么数组在输出的时候会变成问号

想打印井字棋的棋盘,但是为什么打印到后面变成问号了?

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include 
#include "game.h"
#include 
#include 

#define row 3
#define col 3

void display(char board[row][col], int R, int C)//棋盘显示函数
{
    system("cls");
    int i, j;
    for (i = 0; i < (R * 2 - 1); i++)
    {
        if (i % 2 == 0)//奇数行打印
        {
            for (j = 0; j < (C * 2 - 1); j++)
            {
                if (j % 2 == 0)//奇数列执行
                {
                    printf(" ");
                    printf("%c",board[i][j]);
                    printf(" ");
                }
                else//偶数列执行
                {
                    printf("|");
                }
            }
            printf("\n");
        }
        else//偶数行打印
        {
            for (j = 0; j < (C * 2 - 1); j++)
            {
                if (j % 2 == 0)//奇数列执行
                {
                    printf("---");
                }
                else//偶数列执行
                {
                    printf("|");
                }
            }
            printf("\n");
        }
    }
}


int main()
{
    char board[row][col] = { 'a','a' ,'a', 'a' ,'a' ,'a', 'a', 'a', 'a' };
    display(board,row,col);
    return 0;
}


/*以下是输出结果,不知道问题出在哪里

 a | a | a
---|---|---
 a | a | ?
---|---|---
 ?| ?| ?

C:\Users\MSI\Desktop\程序\三子棋\x64\Debug\三子棋.exe (进程 124428)已退出,代码为 0。
按任意键关闭此窗口. . .
*/

img

#define _CRT_SECURE_NO_WARNINGS 1
#include <math.h>
#include <stdio.h>
#include "game.h"
#include <string.h>
#include <windows.h>

#define row 3
#define col 3

void display(int R, int C)//棋盘显示函数
{
system("cls");
int i, j;
char ch='a';
for (i = 0; i < (R * 2 - 1); i++)
{
if (i % 2 == 0)//奇数行打印
{
for (j = 0; j < (C * 2 - 1); j++)
{
if (j % 2 == 0)//奇数列执行
{
printf(" ");
printf("%c",ch);
printf(" ");
}
else//偶数列执行
{
printf("|");
}
}
printf("\n");
}
else//偶数行打印
{
for (j = 0; j < (C * 2 - 1); j++)
{
if (j % 2 == 0)//奇数列执行
{
printf("---");
}
else//偶数列执行
{
printf("|");
}
}
printf("\n");
}
}
}

int main()
{
display(row,col);
return 0;
}