# include & ltstdio.h & gt
# include & lttime.h & gt
# include & ltstdlib.h & gt
int map[9][9]= { 0 };
int result[9][9]= { 0 };
int mine[10][2];
布爾校驗(整數I)
{
int j;
for(j = 0;j & lt我;j++)
if(mine[j][0]= = mine[I][0]& amp;& ampmine[j][1] == mine[i][0])返回true
返回false
}
Int MineNum(int x,int y) //這個函數計算坐標(x,y)周圍的地雷數量。
{
int sum = 0;
int i,j;
if(x-1 & gt;= 0 & amp& ampx+1 & lt;= 8 & amp& ampy-1 & gt;= 0 & amp& ampy+1 & lt;=8)
{//中間位置
for(I = x-1;我& lt= x+1;i++)
for(j = y-1;j & lt= y+1;j++)sum+= map[I][j];
return(sum-map[x][y])/9;
}
if(x = = 0 & amp;& ampy = = 0)return(map[0][1]+map[1][0]+map[1][1])/9;//左上角
if(x = = 0 & amp;& ampy = = 8)return(map[0][7]+map[1][7]+map[1][8])/9;//右上角
if(x = = 8 & amp;& ampy = = 0)return(map[7][0]+map[7][1]+map[8][1])/9;//左下角
if(x = = 8 & amp;& ampy = = 8)return(map[7][7]+map[7][8]+map[8][7])/9;//右上角
如果(x==0)
{//上限
for(I = x;我& lt= x+1;i++)
for(j = y-1;j & lt= y+1;j++)sum+= map[I][j];
return(sum-map[x][y])/9;
}
如果(x==8)
{//下邊界
for(I = x-1;我& lt= x;i++)
for(j = y-1;j & lt= y+1;j++)sum+= map[I][j];
return(sum-map[x][y])/9;
}
如果(y==0)
{//左邊界
for(I = x-1;我& lt= x+1;i++)
for(j = y;j & lt= y+1;j++)sum+= map[I][j];
return(sum-map[x][y])/9;
}
如果(y==8)
{//右邊界
for(I = x-1;我& lt= x+1;i++)
for(j = y-1;j & lt= y;j++)sum+= map[I][j];
return(sum-map[x][y])/9;
}
}
void main()
{
int i,j,x,y;
srand((int)time(0));
for(I = 0;我& lt10;i++)
{
做{
mine[I][0]= rand()% 9;
mine[I][1]= rand()% 9;
} while(Check(I));
printf("%d\t%d\n ",mine[i][0],mine[I][1]);
}
//標記地雷
for(I = 0;我& lt10;i++)map[mine[I][0]][mine[I][1]]= 9;
//數壹下地雷的數量
for(I = 0;我& lt9;i++)
{
for(j = 0;j & lt9;j++)
{
if(map[i][j] == 9)結果[I][j]= 9;
else result[i][j] = MineNum(i,j);
printf("%d ",result[I][j]);
}
printf(" \ n ");
}
}