扫雷
我们总共要有m*n个字符要放进去
要有一个棋盘 但为了估计最边缘的棋子,所以要创建一个n+2行,m+2列的棋盘
具体看代码
#include <stdio.h>
int main() {
int n=0;//行
int m=0;//列
scanf("%d %d",&n,&m);
getchar();//吃掉最后的回车键
char arr[n+2][m+2];
char a=0;
long i=0;
long j=0;
//初始化棋盘
for(i=0;i<n+2;i++)
{
for(j=0;j<m+2;j++)
{
arr[i][j]='0';
}
}
//给棋盘赋值
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%c",&a);
arr[i][j]=a;
}
getchar();//吃掉回车键
}
//判断是否有雷
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(arr[i][j]=='*')
{
continue;
}
else
{
int cun = 0;
if (arr[i - 1][j] == '*') cun++;
if (arr[i - 1][j - 1] == '*') cun++;
if (arr[i][j - 1] == '*')cun++;
if (arr[i + 1][j - 1] == '*') cun++;
if (arr[i + 1][j] == '*') cun++;
if (arr[i + 1][j + 1] == '*') cun++;
if (arr[i][j + 1] == '*') cun++;
if (arr[i - 1][j + 1] == '*') cun++;
arr[i][j] = cun + 48;
}
}
}
//打印棋盘
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
printf("%c",arr[i][j]);
}
printf("\n");
}
return 0;
}

京公网安备 11010502036488号