解题思路:
题目大意是说找‘.’ 的周围有多少个‘*’这个周围是八个方向。
注意事项:
注意添加外圈,否则数组越界。
参考代码:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
static const int MAX=101;
int n,m;
int main(){
int i,j,c=1;
while(cin>>n>>m&&n&&m){
//添加外圈
int b[MAX][MAX]={0};
char a[n+2][m+2];
memset(a,'.',sizeof(a));
//输入
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(a[i][j]=='.'){
if(a[i-1][j-1]=='*') b[i][j]++;
if(a[i-1][j]=='*') b[i][j]++;
if(a[i-1][j+1]=='*') b[i][j]++;
if(a[i+1][j-1]=='*') b[i][j]++;
if(a[i+1][j]=='*') b[i][j]++;
if(a[i+1][j+1]=='*') b[i][j]++;
if(a[i][j-1]=='*') b[i][j]++;
if(a[i][j+1]=='*') b[i][j]++;
a[i][j]=b[i][j]+'0';
}
else continue;
}
}
cout<<"Field #"<<c<<":"<<endl;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
cout<<a[i][j];
}
cout<<endl;
}
c++;
cout<<endl;
}
}
0.0分
2 人评分
点我有惊喜!你懂得!浏览:2072 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:851 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:586 |
最小公倍数 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:661 |
WU-蓝桥杯算法提高VIP-交换Easy (C++代码)浏览:1119 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:840 |
简单的a+b (C语言代码)浏览:606 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:596 |
1908题解浏览:640 |