一道编程题……急用啊……

来源:百度知道 编辑:UC知道 时间:2024/05/11 22:17:19
9×9的方格中,随机布上10个“地雷”,按9行9列输出各格子的数(有雷为9无雷为0),在有相邻的雷的格子里进一步标出相邻地雷数(最多8个)

正确输出结果应是两个9×9矩阵,头一种随机分布10个9,其余为零;后一个除了9以外的其余数应表示其周围9的个数

但我的结果中第二个矩阵全部为零……

谁来告诉偶为什么啊~~急用啊!!感激了……

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
void main()
{ int i,j,k,counter=0,a[N][N]={0};
srand(time(NULL));
for(k=0;k<10;k++)
{ i=rand()%9;
j=rand()%9;
if(a[i][j]!=9)
a[i][j]=9;
else
k--;
}
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
if(a[i][j]=0)
for(i=i-1;i<i+1;i++)
{ for(j=j-1;j<j+1;j++)
if(a[i][j]=9)

for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
if(a[i][j]==0)//等于不是=,而是==
你在这里把所有值都赋为0了

算法没有考虑最后一列的问题。有错误!

你的错误太多了......自己对着看吧

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
int a[N][N],b[N][N];
int main()
{ int i,j,k,counter=0; int u,v;
srand(time(NULL));
for(k=0;k<10;k++)
{ i=rand()%9;
j=rand()%9;
if(a[i][j]!=9)
a[i][j]=9;
else
k--;
}
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}

for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
if(a[i][j]==0)
{ counter=0;
for(u=i-1;u<=i+1;u++)
{ for(v=j-1;v<=j+1;v++)
if(u>=0 && u<N && v>0 && v<N && a[u][v]==9)
counter++;
}
b[i][j]=counter;
}
else b[i][j]=9;
}