疑惑

空间开的正好就会出错,多1个就不会,帮忙解释一下
#include <iostream>

using namespace std;

int main(){
    int n,m;
    cin>>n>>m;
    char a[n+1][m+1];
    char b[n][m];
    for(int i=0;i<n;i++){
        for(int j =0;j<m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int num=0;
            if(a[i][j]=='*'){
                b[i][j]='*';
            }
            else {
                if(a[i-1][j-1]=='*') num++;
                if(a[i-1][j]=='*') num++;
                if(a[i-1][j+1]=='*') num++;
                if(a[i][j-1]=='*') num++;
                if(a[i][j+1]=='*') num++;
                if(a[i+1][j-1]=='*') num++;
                if(a[i+1][j]=='*') num++;
                if(a[i+1][j+1]=='*') num++;
                b[i][j]=num+'0';
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<b[i][j];
        }
        cout<<endl;
    }

    return 0;
}

全部评论
你访问到j+1了呀,也就是有可能访问到m位置,就越界了,还有就是数组的大小要用常量定义,你这么写的话本来就有些问题。
点赞 回复 分享
发布于 2021-09-16 18:38

相关推荐

拿到了ssp的小鲸鱼...:满分160做90+是吧
投递中国电信等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务