主题:[讨论]求大神,老师要我们编一个扫雷的程序,我编出来的为什么总会产生随机数!!求大神!!
老师要我们编一个程序,要求9*9的方格中随机产生十个雷,用“*”表示,
并且周围的无雷格子要用数字表示出该格子周围的雷数,其余周围无雷的空格子用0表示。
下面是我编的,我一运行就出现许多随机数的情况,雷却可以表示出来。
求大神啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<stdio.h>
#include<stdlib.h>#include<time.h>
#define N 9
void bl(int a[9][9]=0)
{ void bz(int a[9][9]);
int i,j,k;
srand(time(NULL));
for(k=0;k<=N;k++)
{
i=rand()%N;
j=rand()%N;
if(a[i][j]==9)
continue;
else
a[i][j]=9;
}
bz(a);
}
void bz(int a[N][N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i][j]==9)
{
if((i-1)>=0&&(j-1)>=0&&a[i][j]!=9)
a[i-1][j-1]+=1;
if((i-1)>=0&&a[i][j]!=9)
a[i-1][j]+=1;
if((i-1)>=0&&(j+1)<N&&a[i][j]!=9)
a[i-1][j+1]+=1;
if((j-1)>=0&&a[i][j]!=9)
a[i][j-1]+=1;
if((j+1)<N&&a[i][j]!=9)
a[i][j+1]+=1;
if((i+1)<N&&(j-1)>=0&&a[i][j]!=9)
a[i+1][j-1]+=1;
if((i+1)<N&&a[i][j]!=9)
a[i+1][j]+=1;
if((i+1)<9&&(j+1)<N&&a[i][j]!=9)
a[i+1][j+1]+=1;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i][j]==9)
printf(" *");
else
printf(" %d",a[i][j]);
}
printf("\n");
}
}
void main()
{
int a[9][9];
bl(a);
}