空间开的正好就会出错,多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;
}
全部评论
(1) 回帖