上面老哥的改了一下,应该判断i-1和j-1是否大于0在加1
查看原帖
上面老哥的改了一下,应该判断i-1和j-1是否大于0在加1
464191
2030190442rxx楼主2021/4/18 21:17
#include<iostream>
using namespace std;
int main(){
    char a[101][101];
    int b[101][101],n,m,i,j;
    cin>>n>>m;//读入行、列
    for(i=0;i<101;i++)
        for(j=0;j<101;j++)
            b[i][j]=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            cin>>a[i][j];
            if(a[i][j]=='*')//判断:如果是地雷
            {   
            
                b[i+1][j+1]++;
                if(j-1>=0){
                b[i+1][j-1]++;
                }
                b[i+1][j]++;
                b[i][j+1]++;
                if(j-1>=0){
                b[i][j-1]++;
                }
                if(i-1>=0){
                b[i-1][j]++;
                }
                 if(i-1>=0){
                b[i-1][j+1]++;
                 }
                 if(i-1>=0&&j-1>=0){
                b[i-1][j-1]++;//先判断再+1   
                 }
            }
        }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(a[i][j]=='*')
                cout<<"*";//如果是地雷(*) 原样输出
            else
                cout<<b[i][j];//否则输出数字
        }    
        cout<<endl;
    }
}
2021/4/18 21:17
加载中...