解题思路: 这道题的意思是输入一个只有" * "和" . "二维字符数组,并对每个字符进行判断,若为" * "就直接输出,若为" . "则要判断以其为中心的九宫格中有几个" * "我们就以t[i][j]为例,以他为中心的九宫格所含有的字符有t[i-1][j-1]、t[i-1][j]、t[i-1][j+1]、t[i][j-1]、t[i][j+1]、t[i+1][j-1]、t[i+1][j]、t[i+1][j+1] 我们只要判断这些字符里有几个" * "并把这个数字输出就行了。
参考代码:
#include <stdio.h>
#include <string.h>
int main()
{
int a, b, i, j, x, y, r, n;
char t[100][100];
r = 0;
while(scanf("%d%d", &a, &b) != EOF)
{
getchar(); 吸收a, b输入时的回车
if(a == 0 && b == 0) break;
for(i = 0; i < a; i++)
{
for(j = 0; j < b; j++)
{
scanf("%c", &t[i][j]);
}
getchar(); 吸收一行结束时的回车
}
r++;
printf("Field #%d:\n", r); 题目要求
for(i = 0; i < a; i++)
{
for(j = 0; j < b; j++)
{
n = 0;
if(t[i][j] == '*') printf("%c", t[i][j]);
else
{
for(x = i-1; x <= i+1; x++)
{
for(y = j-1; y <= j+1; y++)
{
if(x >= 0 && y >= 0 && t[x][y] == '*') n++; 九宫格的判断
}
}
printf("%d", n);
}
}
printf("\n");
}
printf("\n"); 空一行
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复