C language source code: [cpp] # include <stdio. h> int s [110] [110]; int m, n; void dfs (int I, int j) {s [I] [j] = 0; if (I> 0 & s [I-1] [j] = 1) dfs (I-1, j ); if (I <m & s [I + 1] [j] = 1) dfs (I + 1, j ); if (j> 0 & s [I] [J-1] = 1) dfs (I, J-1 ); if (j <n & s [I] [j + 1] = 1) dfs (I, j + 1 ); if (I> 0 & j> 0 & s [I-1] [J-1] = 1) dfs (I-1, J-1 ); if (I> 0 & j <n & s [I-1] [j + 1] = 1) dfs (I-1, j + 1 ); if (I <m & j> 0 & s [I + 1] [J-1] = 1) dfs (I + 1, J-1 ); if (I <m & j <n & s [I + 1] [j + 1] = 1) dfs (I + 1, j + 1 );} int main () {int I, j, num; char a [110]; scanf ("% d", & m, & n); while (m) {for (I = 0; I <m; I ++) {scanf ("% s", a); for (j = 0; j <n; j ++) if (a [j] = '*') s [I] [j] = 0; else s [I] [j] = 1;} num = 0; for (I = 0; I <m; I ++) {for (j = 0; j <n; j ++) {if (s [I] [j] = 1) {num ++; dfs (I, j) ;}} printf ("% d \ n ", num); scanf ("% d", & m, & n );}}