解题思路:
此题可用两个二维数组解决,一个char类型,一个int类型
char用于接收用户输入的 .和*;在接收时即可给第二个int类型数组赋值,当char中接收的是.时,在int中的对应位置输入0,是*时,在int对应位置输入-100
完成上一步之后,再在int数组中进行操作
逐个读取int数组中的数据,当数据>=0时则不进行操作,当数据<0时则把该数据周围的数据进行++操作,直到遍历完成
此时int数组中只会出现两种结果:1、其中数据<0; 2、其中数据>=0
当数据<0时即代表此处数据在char类型数组中对应的是*;>=0则代表对应的是.
再回到char数组中进行操作,即把int数组中>=0的数据转换成char类型,赋值到char数组对应的位置,<0的则不管
最后输出char类型数组即可
注意事项:
此处只提供思路,思路是正确的,且vs编译出来答案也正确,但是网页编译器编译出来显示格式错误,所以可以只看我的思路,去找一个其他题解复制代码提交即可
参考代码:
#include<iostream>
using namespace std;
//上:arr2[i-1][j]++;
//下:arr2[i+1][j]++;
//左:arr2[i][j-1]++;
//右:arr2[i][j+1]++;
//左上:arr2[i-1][j-1]++;
//右上:arr2[i-1][j+1]++;
//左下:arr2[i+1][j-1]++;
//右下:arr2[i+1][j+1]++;
int main()
{
int a, b;
int c = 1;
char arr1[100][100];//用于接收用户输入的字符
int arr2[100][100];//用于存放数据
while (cin >> a >> b && a != 0)
{
for (int i = 0; i < a; i++)//录入字符的同时,当录入为.时则把数组对应位置记为0
{
for (int j = 0; j < b; j++)
{
cin >> arr1[i][j];
if (arr1[i][j] == '.')
arr2[i][j] = 0;
else//当录入为*时则把数组对应位置记为-100
arr2[i][j] = -100;
}
}
cout << "Field" << " " << "#" << c << ":" << endl;
c++;
for (int i = 0; i < a; i++)//遍历数组
{
for (int j = 0; j < b; j++)
{
if (arr2[i][j] < 0)//当有数小于0时(即对应位置为*),则把周围一圈全部+1
{
if(i-1>=0)//可以向上走
arr2[i - 1][j]++;
if(i+1<a)//可以向下走
arr2[i + 1][j]++;
if(j-1>=0)//可以向左走
arr2[i][j - 1]++;
if(j+1<b)//可以向右走
arr2[i][j + 1]++;
if(i-1>=0&&j-1>=0)//可以向左上走
arr2[i - 1][j - 1]++;
if(i+1<a&&j-1>=0)//可以向左下走
arr2[i + 1][j - 1]++;
if(i - 1 >= 0&& j + 1 < b)//可以向右上走
arr2[i - 1][j + 1]++;
if(i + 1 < a&& j + 1 < b)//可以向右下走
arr2[i + 1][j + 1]++;
}
}
}
for (int i = 0; i < a; i++)//遍历数组,把.换成大于0的数,小于0的数不换
{
for (int j = 0; j < b; j++)
{
if (arr2[i][j] >= 0)
arr1[i][j] = arr2[i][j]+'0';//类型转换int->char : +'0';char->int : -'0'
cout << arr1[i][j];
}
cout << endl;
}
}
return 0;
}
0.0分
0 人评分
数字整除 (C++代码)——(22行代码)真的只需要两个变量就够了浏览:1867 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:796 |
C语言训练-最大数问题 (C语言代码)浏览:648 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:443 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:949 |
成绩转换 (C语言代码)浏览:1048 |
C语言训练-求函数值 (C语言代码)浏览:600 |
简单的for循环浏览:1498 |
剪刀石头布 (C语言代码)浏览:802 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:566 |