
#include<stdio.h>
#define int long long
signed main(){
int n,m,b[5005][5005];
char a[5005][5005];
scanf("%lld %lld",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
b[i][j]=0; } }
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%c",&a[i][j]);
if(a[i][j]=='
'){
b[i+1][j+1]++;
b[i+1][j-1]++;
b[i+1][j]++;
b[i][j+1]++;
b[i][j-1]++;
b[i-1][j]++;
b[i-1][j+1]++;
b[i-1][j-1]++; } } }
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='')printf("*");
else printf("%lld",b[i][j]); }
printf("\n"); }
return 0;}
数组定义的容量太大,而且每次循环都会再定义一次,导致缓存区溢出;
解决办法:将二维数组的定义改为全局变量即可,也就是在int main外面定义数组。
代码呢
说明没输入前系统就崩溃啦。提示信息中的return value不是0,是个垃圾值,说明崩掉了。
把你代码中scanf或者cin输入前的代码贴出来看看吧
局部大数组变量前面加static将其存储空间从栈区挪到全局变量区