解题思路:
每次输入雷的时候就开始判断8个位置
注意事项:
小心回车和输出有空行
参考代码:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
char field[105][105];
int main(){
int h,l;
char a;
int round = 0;
while(scanf("%d%d",&h,&l)==2 && h != 0){
getchar();
memset(field,'0',sizeof(field));
for(int i = 0; i < h; i++){
for(int j = 0; j < l; j++){
a = getchar();
if(a == '*'){
field[i][j] = '*';
if((i-1 >= 0 && j-1 >= 0) && field[i-1][j-1] != '*') field[i-1][j-1]++;
if((i-1 >= 0) && field[i-1][j] != '*') field[i-1][j]++;
if((i-1 >= 0 && j+1 < l) && field[i-1][j+1] != '*') field[i-1][j+1]++;
if((j-1 >= 0) && field[i][j-1] != '*') field[i][j-1]++;
if((j+1 < l) && field[i][j+1] != '*') field[i][j+1]++;
if((i+1 < h && j-1 >= 0) && field[i-1][j] != '*') field[i+1][j-1]++;
if((i+1 < h) && field[i-1][j] != '*') field[i+1][j]++;
if((i+1 < h && j+1 < l) && field[i-1][j] != '*') field[i+1][j+1]++;
}
}
getchar();
}
printf("Field #%d:\n",++round);
for(int i = 0; i < h; i++){
for(int j = 0; j < l; j++){
printf("%c",field[i][j]);
}
putchar('\n');
}
printf("\n");
}
return 0;
}
0.0分
0 人评分
大神老白 (C语言代码)浏览:694 |
剔除相关数 (C语言代码)浏览:1058 |
拆分位数 (C语言代码)浏览:1361 |
程序员的表白 (C语言代码)浏览:706 |
DNA (C语言描述,数据结构)浏览:909 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1482 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:866 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:566 |
数组与指针的问题浏览:760 |