解题思路:
注意事项:
参考代码:#include<stdio.h>
#include<stdlib.h>
int main()
{
int row,col,field=0;
int i,j,k,l,i1,j1,M=0;
char *a[50][50];
int b[50];
for(i=0;i<50;i++)//录入每个filed的数据
{
scanf("%d %d",&row,&col);
if((row==0)&&(col==0))
{
goto exit;
}
b[i]=row;
field++;
for(j=0;j<row;j++)//此处录入单个的field的值
{
a[i][j]=(char*)malloc(sizeof(char)*(col));
scanf("%s",a[i][j]);
}
for(k=0;k<row;k++)//定位到单个filed中的每个的位,并为其赋新值
{
for(l=0;l<col;l++)
{
M=0;
if(k==0)//第一行的情况
{
if(*(a[i][0]+l)=='*');
if(*(a[i][0]+l)=='.')
{
if(l==0)
{
if(*(a[i][0]+1)=='*')
M++;
if(*(a[i][1]+l)=='*')
M++;
if(*(a[i][1]+1)=='*')
M++;
}
else if(l==col-1)
{
if(*(a[i][0]+l-1)=='*')
M++;
if(*(a[i][1]+l-1)=='*')
M++;
if(*(a[i][1]+l)=='*')
M++;
}
else
{
if(*(a[i][1]+l-1)=='*')
M++;
if(*(a[i][1]+l+1)=='*')
M++;
if(*(a[i][1]+l)=='*')
M++;
if(*(a[i][0]+l-1)=='*')
M++;
if(*(a[i][0]+l+1)=='*')
M++;
}
}
}
else if(k==row-1)//最后一行的情况
{
if(*(a[i][k]+l)=='*');
if(*(a[i][k]+l)=='.')
{
if(l==0)
{
if(*(a[i][k-1]+l+1)=='*')
M++;
if(*(a[i][k]+l+1)=='*')
M++;
if(*(a[i][k-1]+l)=='*')
M++;
}
else if(l==col-1)
{
if(*(a[i][k-1]+l-1)=='*')
M++;
if(*(a[i][k-1]+l)=='*')
M++;
if(*(a[i][k]+l-1)=='*')
M++;
}
else
{
if(*(a[i][k-1]+l-1)=='*')
M++;
if(*(a[i][k-1]+l+1)=='*')
M++;
if(*(a[i][k-1]+l)=='*')
M++;
if(*(a[i][k]+l-1)=='*')
M++;
if(*(a[i][k]+l+1)=='*')
M++;
}
}
}
else//中间行的情况
{
if(*(a[i][k]+l)=='*');
if(*(a[i][k]+l)=='.')
{
if(l==0)//靠左计算
{
if(*(a[i][k-1]+l)=='*')
M++;
if(*(a[i][k-1]+l+1)=='*')
M++;
if(*(a[i][k]+l+1)=='*')
M++;
if(*(a[i][k+1]+l)=='*')
M++;
if(*(a[i][k+1]+l+1)=='*')
M++;
}
else if(l==col-1)//靠右计算
{
if(*(a[i][k-1]+l)=='*')
M++;
if(*(a[i][k-1]+l-1)=='*')
M++;
if(*(a[i][k]+l-1)=='*')
M++;
if(*(a[i][k+1]+l)=='*')
M++;
if(*(a[i][k+1]+l-1)=='*')
M++;
}
else//靠中列的计算
{
for(i1=k-1;i1<=k+1;i1++)
{
for(j1=l-1;j1<=l+1;j1++)
{
if(*(a[i][i1]+j1)=='*')
M++;
}
}
}
}
}
if(*(a[i][k]+l)=='.')
{
*(a[i][k]+l)=48+M;
}
}
}
}//结束!
exit:
for(i=0;i<field;i++)//输出结果
{
printf("Field #%d:\n",i+1);
for(j=0;j<b[i];j++)
{
printf("%s",a[i][j]);
printf("\n");
}
printf("\n");
}
for(i=0;i<field;i++) //释放空间
{
for(j=0;j<b[j];j++)
{
free(a[i][j]);
}
}
return 0;
}
0.0分
0 人评分