哈,啦啦 2023-10-15 23:22 采纳率: 75%
浏览 12
已结题

C语言遇到一个小bug?

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

img

就是这两个黄色框里面的,就是此时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;
}

题目地址:

https://ac.nowcoder.com/acm/contest/67481/B

  • 写回答

1条回答 默认 最新

  • 哈,啦啦 2023-10-16 08:09
    关注

    各位,一个很低级的错误,我把赋值号写成了等于了,😭

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月16日
  • 已采纳回答 10月16日
  • 修改了问题 10月16日
  • 创建了问题 10月15日