解题思路:
注意事项:
参考代码:#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 人评分
A+B for Input-Output Practice (VI) (C++代码)浏览:417 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1140 |
简单的a+b (C语言代码)浏览:530 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1311 |
WU-printf基础练习2 (C++代码)浏览:2007 |
蛇行矩阵 (C语言代码)浏览:535 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:616 |
1392题解(大数相加)浏览:604 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:538 |
求圆的面积 (C语言代码)浏览:657 |