【c语言小游戏编程】关于C语言的学生作业问题1.编程序模拟“地雷游戏”。在9×9的方格...

发布时间:2021-03-22 07:38:50

关于C语言的学生作业问题1.编程序模拟“地雷游戏”。在9×9的方格中,随机布上10个“地雷”,按9行9列输出各格子的数(有雷为9,无雷为0)。在有相邻地雷的格子内进一步标出相邻地雷数(最多8个)。 2. 在已做“地雷游戏”的程序基础上(第1题),按如下要求改写程序: ① “雷区”方阵的大小在程序运行过程中通过键盘输入; ② 地雷的个数在程序运行中指定; ③ 地雷的个数必须与指定个数相同

网友回答

【答案】 第一题://测试可用,已修改完整,望采纳#include<stdio.h>#include<time.h>#include<stdlib.h>#define N 10 //地雷的个数void fun1(int (*a)[9]){    /*随机生成地雷*/    int i,j;    srand((int)time(0));    int counter=0;    while(counter<N)    {        i=rand()%9;        j=rand()%9;        if(*(*(a+i)+j)==9)continue;        else        {            *(*(a+i)+j)=9;            counter++;        }    }}void fun2(int (*a)[9]){    /*输出雷阵*/    int i,j;    for(i=0; i<9; i++)    {        for(j=0; j<9; j++)            printf("%d ",*(*(a+i)+j));        printf("\n");    }    printf("\n");}int Sum(int (*a)[9],int i,int j){    /*判断编号为i,j的格子周围有多少个地雷*/    int di,dj,counter=0;    for(di=-1; di<=1; di++)        for(dj=-1; dj<=1; dj++)        {            if(i+di<0||i+di>8||j+dj<0||j+dj>8)continue;            /*超出范围*/            else if(*(*(a+i+di)+j+dj)==9)counter++;        }    return counter;}void fun3(int (*a)[9]){    /*扫雷*/    int i,j;    for(i=0; i<9; i++)        for(j=0; j<9; j++)        {            if(*(*(a+i)+j)==9)continue;            /*如果其本身就是地雷*/            else *(*(a+i)+j)=Sum(a,i,j);        }}int main(){    int a[9][9];    int i,j;    for(i=0; i<9; i++)        for(j=0; j<9; j++)            *(*(a+i)+j)=0;    fun1(a);//产生雷阵    fun2(a);//输出雷阵    fun3(a);//扫雷    fun2(a);//输出雷阵    return 0;}
以上问题属网友观点,不代表本站立场,仅供参考!