记录一下AC代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int solve(char** str,int n, int m, int i, int j){
int l, r, t, b;/*确定左右上底来确定小方阵*/
if(i - 1 < 0){
t = 0;
}else{
t = i -1;
}
if(i + 1 > n - 1){
b = n - 1;
}else{
b = i + 1;
}
if(j - 1 < 0){
l = 0;
}else{
l = j - 1;
}
if(j + 1 > m - 1){
r = m - 1;
}else{
r = j + 1;
}
int count = 0;
for(; t<=b; t++){
int temp;
for(temp=l;temp<=r;temp++){
if(str[t][temp]== '*'){
count++;
}
}
}
return count;
}
int main(){
int n,m;
int count = 1;
while(scanf("%d%d",&n,&m)){
/*程序中止条件 */
if(n == 0 && m == 0){
break;
}
if(count>1)
printf("\n");
int i, j;
/*输入布局 */
/*c语言动态分配内存*/
char** str;
str = (char**) malloc(sizeof(int*) * n);
for(i=0;istr[i] = (char*) malloc(sizeof(char) * m);
}
getchar(); /*注意消除回车的影响*/
for(i=0 ;ifor(j=0 ;j"%c",&str[i][j]);
}
getchar(); /*注意消除回车的影响*/
}
/*输出布局 */
printf("Field #%d:\n",count);
for(i=0; ifor(j=0; jif(str[i][j] == '*'){
printf("*");
}else{
printf("%d",solve(str,n,m,i,j));
}
}
printf("\n");
}
count++;
/*释放内存*/
for(i=0;istr[i]);
}
free(str);
}
return 0;
}