第29行的getchar()一定要写。
#include <stdio.h>
char maze[101][101];
int n, m;
void dfs(int i, int j) {
maze[i][j] = '*';
for(int x = -1; x <= 1; x++) {
for(int y = -1; y <= 1; y++) {
int nx = i + x;
int ny = j + y;
if(0 <= nx && nx < m && 0 <= ny && ny < n && maze[nx][ny] == '@')
dfs(nx, ny);
}
}
return ;
}
int main() {
while(~scanf("%d%d", &m, &n)) {
if(m == 0 || n == 0)
break;
for(int i=0; i<m; i++) {
getchar();
for(int j=0; j<n; j++) {
scanf("%c", &maze[i][j]);
}
}
int res = 0;
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
if(maze[i][j] == '@') {
dfs(i, j);
res ++;
}
}
}
printf("%d\n", res);
}
return 0;
}