#include void main()
{
int **pArr,m,n,dn,i,j;
void mine(int **p,int m,int n,int dn);
void mine_dis(int **p,int m,int n);
printf("请输入行数和列数和地雷数:\n");
scanf("%d,%d,%d",&m,&n,&dn);
pArr=(int **)malloc((m+2)*sizeof(int *));
for(i=0;i<=m+2;i++)
pArr[i]=(int *)malloc((n+2)*sizeof(int *));
for(i=0;i<=n+2;i++)
{
for(j=0;j<=n+2;j++)
pArr[i][j]=0;
}
printf("随机雷区:\n");
mine(pArr,m,n,dn);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
printf("%5d",pArr[i][j]);
}
printf("\n");
}
printf("\n地雷分布及数目\n");
mine_dis(pArr,m,n);
}
void mine(int **p,int m,int n,int dn)
{
int k,i,j;
srand(time(NULL));
for(k=1;k<=dn;)
{
for(i=0;i==0;)
i=rand()%m;
for(j=0;j==0;)
j=rand()%n;
if(p[i][j]==0)
{
p[i][j]=9;
k++;
}
}
}
void mine_dis(int **p,int m,int n)
{
int i,j;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
if(p[i][j]>8)
{
p[i-1][j-1]++;p[i-1][j]++;p[i-1][j+1]++;
p[i][j-1]++;p[i][j+1]++;
p[i+1][j-1]++;p[i+1][j]++;p[i+1][j+1]++;
}
}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(p[i][j]>=9)
{
p[i][j]=*;
printf("%5c",p[i][j]);
}
else
printf("%5d",p[i][j]);
}
printf("\n");
}
}
四、源程序调试过程(或运行结果)
五、实验小结(体会):
在此实验中我学会了动态数组的使用方法,而且也感受到了指针对C语言带来的方便。
2014年5月15号