做了一个算法题,用c语言做的,结果在运行的过程出现了一个问题,在一个if-else判断处,判断了if为false后,也不会执行else,并且在输入的字符串查看时,字符有些怪异。

就是这两个黄色框里面的,就是此时grid[nx][ny] = ‘0’,但是再debug这里watch时却是0‘\000’,在右边的黄色框里面if判断了之后也不会执行else里面的内容,我感觉我要噶掉了(注:如果grid[nx][ny]如果是字符?时,watch时就显示是63‘?’),这个问题折磨了我一个晚上,希望有热心人能够帮助我!
#include<stdio.h>
int n,m;
int x[] = {-1,-1,-1,0,0,1,1,1};
int y[] = {-1,0,1,-1,1,-1,0,1};
int main(){
scanf("%d%d",&n,&m);
getchar();
char grid[n][m];
char ans[n][m];
for(int i = 0; i < n; i++){
scanf("%s",&grid[i]);
getchar();
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(grid[i][j] == '*'){
for(int k = 0; k < 8; k++){
int nx = i + x[k];
int ny = j + y[k];
if(nx >= 0 && nx < n && ny >= 0 && ny < m){
if(grid[nx][ny] != '*'){
char g = grid[nx][ny];
if(grid[nx][ny] == '?'){
grid[nx][ny] == '1';
}else{
int t = grid[nx][ny] - '0';
t++;
grid[nx][ny] = t + '0';
}
}
}
}
}else{
grid[i][j] == '0';
}
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
printf("%c",grid[i][j]);
}
printf("\n");
}
return 0;
}
题目地址: