刚开始二维数组输入的时候, 忘记每行之后加一个getchar吸收回车符号了
#include <stdio.h>
int main()
{
int x, y, i, j, n = 0;
char ch[9][9];
while(1)
{
scanf("%d%d", &x, &y);
if(x == 0 && y == 0)
break;
else
{
n++;
getchar();
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
scanf("%c", &ch[i][j]);
getchar();//非常关键 ! ! !
}
int arr[9][9];
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
{
if(ch[i][j] == '*')
arr[i][j] = -1;
else
arr[i][j] = 0;
}
}
int flag = 0;
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
{
if(arr[i][j] == -1)
{
flag++;
int a, b;
for(a=0; a<x; a++)
{
for(b=0; b<y; b++)
{
if((i-a)*(i-a) + (j-b)*(j-b) == 1 && arr[a][b] != -1)
arr[a][b]++;
else if((i-a)*(i-a) + (j-b)*(j-b) == 2 && arr[a][b] != -1)
arr[a][b]++;
else
;
}
}
}
}
}
printf("Field #%d:\n", n);
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
{
if(arr[i][j] == -1)
printf("*");
else
printf("%d", arr[i][j]);
}
printf("\n");
}
printf("\n");
}
}
return 0;
}