c语言自己写的代码,打印格式有问题,当你输入ascci32是空格的那个位置的时候,打印刷新的棋盘格式有问题

是半成品,没有写完,但是当我运行的时候,那个空白的地方(周围没有雷的位置)打印刷新的扫雷的格式不对,望帮忙解决一下,谢谢,新手上路请多指教。
感谢感谢!

代码如下:

#include<stdio.h>
#include<stdlib.h>
#define LEI 10

void genxin1();
void start();
void fangshuzi(int x,int y);
void fangzhi();
void genxin();
void chushihua();
void gameover();
void saomiao(int x,int y);

int i,j;
int saolei[16][16],saolei1[16][16];

int main(void)
{
chushihua();
genxin();
fangzhi();

printf("\n");
for(i=0;i<10;i++)
{
    for(j=0;j<10;j++)
    {
        

printf("%3d",saolei1[i][j]);

    }printf("\n");
    }

start();

getchar();
return 0;

}

void gameocer()//游戏结束的提示(包括键入是否继续)
{

}

void start()//开始键入坐标开始游戏
{
int x,y;
while(1)
{
printf("请输入坐标(x,y):");
while((scanf("%d,%d",&y,&x))==2)
{
if(saolei1[x][y]>0)
{
if(saolei1[x][y]==42)
{
//gameover();
break;
getchar();
}
else
{
saolei[x][y]=saolei1[x][y];
saolei1[x][y]=-1;
if(saolei[x][y]==32)
{
saomiao(x,y);
}
genxin();
printf("请输入坐标(x,y):");
}
}
else
{
printf("Erro,retry!\n");
printf("请输入坐标(x,y):");
}

}

}
}

void saomiao(int x,int y)//\扩展函数,散开,进行周围九宫格的判断。
{
int o,p;

for(o=x-1;o<=x+1;o++)
{
    for(p=y-1;p<=y+1;p++)
    {
    saolei[o][p]=saolei1[o][p];//赋值给saolei
    }
}
    saolei1[x][y]=-1;
for(o=x-1;o<=x+1;o++)
{
    for(p=y-1;p<=y+1;p++)
    {
        if(saolei[o][p]==32&&saolei1[o][p]!=-1)//判断
        {
            saomiao(o,p);
        }
    }
}

}

void fangshuzi(int x,int y)//放置除了雷的位置的其他的数值在saolei1的数组里面
{
int o,p,count=0;
for(o=x-1;o<=x+1;o++)
{
for(p=y-1;p<=y+1;p++)
{
if(saolei1[o][p]==42)
count++;
}
}
if(count==0)
saolei1[x][y]=32;
else
{saolei1[x][y]=count+48;
count=0;
}

}

void fangzhi()//更新saolei1的格子
{
for(i=1;i<=LEI;i++)
{
saolei1[rand()%10+1][rand()%10+1]=42; //saolei1的初始化,雷定义为*
}
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
if(saolei1[i][j]!=42)
fangshuzi(i,j);//填上数字
}
}
}

void genxin()//打印扫雷数组saolei[][]
{
printf("\t 扫雷\n");
printf("——\n");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
/if(i==0||j==0){
printf("%3c",saolei[i][j]);
}else
/
printf("%3c",saolei[i][j]);
}
printf("\n");
}
printf("——\n");
}

void chushihua()
{ //初始化saolei saolei1两个数组

for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
saolei[i][j]=111;
saolei[0][j]=j+48;

        saolei1[i][j]=48;
        saolei1[0][j]=j+48;
    }
    saolei[i][0]=i+48;
    saolei1[i][0]=i+48;
}

}

你题目的解答代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LEI 10

void genxin1();
void start();
void fangshuzi(int x, int y);
void fangzhi();
void genxin();
void chushihua();
void gameover();
void saomiao(int x, int y);

int i, j;
int saolei[16][16], saolei1[16][16];

int main(void)
{
    srand((unsigned)time(NULL));
    chushihua();
    genxin();
    fangzhi();

    printf("\n");
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {

            printf("%3d", saolei1[i][j]);
        }
        printf("\n");
    }

    start();

    getchar();
    return 0;
}

void gameocer() //游戏结束的提示(包括键入是否继续)
{
}

void start() //开始键入坐标开始游戏
{
    int x, y;
    while (1)
    {
        printf("请输入坐标(x,y):");
        while ((scanf("%d,%d", &y, &x)) == 2)
        {
            if (saolei1[x][y] > 0)
            {
                if (saolei1[x][y] == 42)
                {
                    //gameover();
                    break;
                    getchar();
                }
                else
                {
                    saomiao(x, y);
                    genxin();
                    printf("请输入坐标(x,y):");
                }
            }
            else
            {
                printf("Erro,retry!\n");
                printf("请输入坐标(x,y):");
            }
        }
    }
}

void saomiao(int x, int y) //\扩展函数,散开,进行周围九宫格的判断。
{
    int o, p;
    if (x<1 || x>9 || y<1 || y>9 || saolei1[x][y] == -1)
        return;
    saolei[x][y] = saolei1[x][y]; //赋值给saolei
    saolei1[x][y] = -1;
    if (saolei[x][y] == 32)
        for (o = x - 1; o <= x + 1; o++)
        {
            for (p = y - 1; p <= y + 1; p++)
            {
                saomiao(o, p);
            }
        }
}

void fangshuzi(int x, int y) //放置除了雷的位置的其他的数值在saolei1的数组里面
{
    int o, p, count = 0;
    for (o = x - 1; o <= x + 1; o++)
    {
        for (p = y - 1; p <= y + 1; p++)
        {
            if (saolei1[o][p] == 42)
                count++;
        }
    }
    if (count == 0)
        saolei1[x][y] = 32;
    else
    {
        saolei1[x][y] = count + 48;
        count = 0;
    }
}

void fangzhi() //更新saolei1的格子
{
    for (i = 1; i <= LEI; i++)
    {
        saolei1[rand() % 9 + 1][rand() % 9 + 1] = 42; //saolei1的初始化,雷定义为*
    }
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j < 10; j++)
        {
            if (saolei1[i][j] != 42)
                fangshuzi(i, j); //填上数字
        }
    }
}

void genxin() //打印扫雷数组saolei[][]
{
    printf("\t 扫雷\n");
    printf("——\n");
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            /* if (i == 0 || j == 0)
            {
                printf("%3c", saolei[i][j]);
            }
            else */
                printf("%3c", saolei[i][j]);
        }
        printf("\n");
    }
    printf("——\n");
}

void chushihua()
{ //初始化saolei saolei1两个数组

    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            saolei[i][j] = 111;
            saolei[0][j] = j + 48;

            saolei1[i][j] = 48;
            saolei1[0][j] = j + 48;
        }
        saolei[i][0] = i + 48;
        saolei1[i][0] = i + 48;
    }
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img