关于#c语言#的问题:M1版macbook air,使用vs code照着网上的扫雷程序敲完后遇到下面的问题

M1版macbook air,使用vs code照着网上的扫雷程序敲完后遇到下面的问题。琢磨了好久搞不出来,麻烦各位为我答疑解惑,十分感谢!!先附上源代码,后面两张分别是项目
game.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"

void InitBoard(char board[ROWS][COLS],int rows,int cols,char set)
{
    int i=0;
    int j=0;
    for(i=0;i<rows;i++)
    {
        for(j=0;jset;
        }
    }
}
void DisplayBoard(char board[ROWS][COLS],int row,int col)
{
    int i=0;
    int j=0;
    for(i=0;i<=col;i++)
    {
        printf("%d ",i);
    }
    printf("\n");
    for(i=1;i<=row;i++)
    {
        printf("%d ",i);
        for(j=1;j<=col;j++)
        {
            printf("%c ",board[i][j]);
        }
        printf("\n");
    }
}

void setMine(char mine[ROWS][COLS],int row,int col)
{
    int count=EASY_COUNT;
    while (count)
    {
        int x=rand()%row+1;
        int y=rand()%col+1;
        if(mine[x][y]=='0')
        {
            mine[x][y]='0';
            count--;
        }
    }   
}

int get_mine_count(char mine[ROWS][COLS],int x,int y)
{
    return mine[x-1][y-1]+mine[x-1][y]+mine[x-1][y+1]+mine[x][y-1]+mine[x][y+1]+mine[x-1][y-1]+mine[x-1][y]+mine[x-1][y+1]-8*'0';
}

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
    int x=0;
    int y=0;
    int win=0;
    while(win<row*col-EASY_COUNT)
    {
        printf("输入坐标:>");
        scanf("%d %d",&x,&y);
        if(x>1&&x<=row&&y>=1&&y<=col)
        {
            if(mine[x][y]=='1')
            {
                printf("哈哈哈,你被炸死了!\n");
                DisplayBoard(mine,ROW,COL);
                break;
            }
            else
            {
                int n=get_mine_count(mine,x,y);
                show[x][y]=n+'0';
                DisplayBoard(show,ROW,COL);
                win++;
            }
        }
        else
        {
            printf("输入坐标非法,请重新输入:>");
        }
        if(win==row*col-EASY_COUNT)
        {
            printf("恭喜你,排雷成功!\n");
            DisplayBoard(mine,ROW,COL);
        }
    }
}

game.h

#ifndef game_h
#define game_h

#include 

#endif /* game_h */
#define _CRT_SECURE_NO_WARNING 1
#include
#include
#define ROW 9  //用于说明本程序的所有“ROW”意思是9
#define COL 9
#define ROWS ROW+2  //代表本程序中所有的ROWS代表9+2=11
#define COLS COL+2
#define EASY_COUNT 10

void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);

void DisplayBoard(char board[ROWS][COLS],int row,int col);

void setMine(char mine[ROWS][COLS],int row,int col);

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);


test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void game()
{
    char mine[ROWS][COLS]={0};
    char show[ROWS][COLS]={0};

    InitBoard(mine,ROWS,COLS,'0');
    InitBoard(show,ROWS,COLS,'*');
    setMine(mine,ROW,COL);
    DisplayBoard(mine,ROW,COL);
    FindMine(mine,show,ROW,COL);
}

void menu()
{
    printf("********************************\n");
    printf("**********   1、start   ********\n");
    printf("**********   0、exit    ********\n");
    printf("********************************\n");
}

void test()
{
    int input=0;
    srand((unsigned int)time(NULL));
    do
    {
        menu();//已经执行了函数menu
        printf("请输入:");
        scanf("%d",&input);
        switch (input)
        {
        case 1:
            printf("游戏开始\n");
            game();//直到这里才会生成棋盘
            break;
        case 0:
            printf("游戏结束\n");
            break;
        default :
            printf("非法输入,请重新输入\n");
            break;
        }
    } while (input);
}

int main()
{
    test();
    return 0;
}

img

img


再次向您表达感谢!!

测试了一下没问题,直接放一起测试的。

#define _CRT_SECURE_NO_WARNING 1
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9  //用于说明本程序的所有“ROW”意思是9
#define COL 9
#define ROWS ROW+2  //代表本程序中所有的ROWS代表9+2=11
#define COLS COL+2
#define EASY_COUNT 10
 
void InitBoard(char board[ROWS][COLS],int rows,int cols,char set);
 
void DisplayBoard(char board[ROWS][COLS],int row,int col);
 
void setMine(char mine[ROWS][COLS],int row,int col);
 
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);
 
 
void InitBoard(char board[ROWS][COLS],int rows,int cols,char set)
{
    int i=0;
    int j=0;
    for(i=0;i<rows;i++)
    {
        for(j=0;j<cols;j++)
        {
            board[i][j]=set;
        }
    }
}
void DisplayBoard(char board[ROWS][COLS],int row,int col)
{
    int i=0;
    int j=0;
    for(i=0;i<=col;i++)
    {
        printf("%d ",i);
    }
    printf("\n");
    for(i=1;i<=row;i++)
    {
        printf("%d ",i);
        for(j=1;j<=col;j++)
        {
            printf("%c ",board[i][j]);
        }
        printf("\n");
    }
}
 
void setMine(char mine[ROWS][COLS],int row,int col)
{
    int count=EASY_COUNT;
    while (count)
    {
        int x=rand()%row+1;
        int y=rand()%col+1;
        if(mine[x][y]=='0')
        {
            mine[x][y]='0';
            count--;
        }
    }   
}
 
int get_mine_count(char mine[ROWS][COLS],int x,int y)
{
    return mine[x-1][y-1]+mine[x-1][y]+mine[x-1][y+1]+mine[x][y-1]+mine[x][y+1]+mine[x-1][y-1]+mine[x-1][y]+mine[x-1][y+1]-8*'0';
}
 
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
    int x=0;
    int y=0;
    int win=0;
    while(win<row*col-EASY_COUNT)
    {
        printf("输入坐标:>");
        scanf("%d %d",&x,&y);
        if(x>1&&x<=row&&y>=1&&y<=col)
        {
            if(mine[x][y]=='1')
            {
                printf("哈哈哈,你被炸死了!\n");
                DisplayBoard(mine,ROW,COL);
                break;
            }
            else
            {
                int n=get_mine_count(mine,x,y);
                show[x][y]=n+'0';
                DisplayBoard(show,ROW,COL);
                win++;
            }
        }
        else
        {
            printf("输入坐标非法,请重新输入:>");
        }
        if(win==row*col-EASY_COUNT)
        {
            printf("恭喜你,排雷成功!\n");
            DisplayBoard(mine,ROW,COL);
        }
    }
}
 
void game()
{
    char mine[ROWS][COLS]={0};
    char show[ROWS][COLS]={0};
 
    InitBoard(mine,ROWS,COLS,'0');
    InitBoard(show,ROWS,COLS,'*');
    setMine(mine,ROW,COL);
    DisplayBoard(mine,ROW,COL);
    FindMine(mine,show,ROW,COL);
}
 
void menu()
{
    printf("********************************\n");
    printf("**********   1、start   ********\n");
    printf("**********   0、exit    ********\n");
    printf("********************************\n");
}
 
void test()
{
    int input=0;
    srand((unsigned int)time(NULL));
    do
    {
        menu();//已经执行了函数menu
        printf("请输入:");
        scanf("%d",&input);
        switch (input)
        {
        case 1:
            printf("游戏开始\n");
            game();//直到这里才会生成棋盘
            break;
        case 0:
            printf("游戏结束\n");
            break;
        default :
            printf("非法输入,请重新输入\n");
            break;
        }
    } while (input);
}
 
int main()
{
    test();
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632