解题思路:     这道题的意思是输入一个只有" * "和" . "二维字符数组,并对每个字符进行判断,若为" * "就直接输出,若为" . "则要判断以其为中心的九宫格中有几个" * "我们就以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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论