题目链接:https://www.dotcpp.com/oj/problem1442.html

我把文字粘贴上来,那个符号的十字图空格不对齐,所以就没粘贴上来。

测试链接同题目链接。

p1.JPG


思路:我刚开始写的时候也没有写出来,我看蓝桥杯网站上老师的讲解才会写的。

          首先要计算n=1的时候长宽和n的关系。

          在计算n=2的,n=3的,找到n与长宽关系。

          之后先把n=1的逐行打印出来。

          这个打印的时候,用二维数组进行处理。

          然后就写出来一大串的循环关系。

          之后,在n=1的时候打印的时候是在二维数组(0,0)的位置,如果把这个n=3 n=2 n=1变成动态的,就需要从相对位置开始打印。

          打印图形的题,就是找数量关系,找到关系然后逐行打印。如果是多重的,那么就先写出来一种可能的n=1,然后再把这一种可能的,改活。一种可能的时候是从(0,0)开始打印,而多重就是从相对位置开始打印。

          具体看代码,推推数学关系,慢慢就出来了,先写固定的,再写相对的。硬着头皮依据数学关系慢慢推。

过程:建立二维数组-->在相应的位置上把数组该位置的内容改为'$'-->输出二维数组非'$'的位置输出'.'-->结束。


#include <stdio.h>
int N;
char a[200][200];
void print()
{
    int i,j;
    for(i=0;i<9+(N-1)*4;i++)
    {
        for(j=0;j<9+(N-1)*4;j++)
        {
            if(a[i][j]!='$')    a[i][j]='.';
            printf("%c",a[i][j]);
        }
        printf("\n");
    }
 } 
void f(int n)
{
    int i,l=(N-n)*2,r=9+(N-1)*4-1-l;    //根据最大围数,和目前的围数,推算相对位置。看不懂以下代码就假设N n(N=4 n=4 N=4 n=3)的数带进去看看,把图片或者图形看成二维数组,这个数据是推导出来的。 
    //正数第一行与倒数第一行。 
    for(i=l+2;i<=r-2;i++)
    {
        a[l][i]='$';
        a[r][i]='$';
    }
    //正数第二行与倒数第二行。 
    a[l+1][l+2]='$';
    a[l+1][r-2]='$';
    a[r-1][l+2]='$';
    a[r-1][r-2]='$';
    //正数第三行与倒数第三行。 
    a[l+2][l+0]='$'; a[l+2][l+1]='$'; a[l+2][l+2]='$'; a[l+2][r-0]='$'; a[l+2][r-1]='$'; a[l+2][r-2]='$'; 
    a[r-2][l+0]='$'; a[r-2][l+1]='$'; a[r-2][l+2]='$'; a[r-2][r-0]='$'; a[r-2][r-1]='$'; a[r-2][r-2]='$'; 
    //左右两边的中间直线区域。 
    for(i=l+2;i<=r-2;i++)
    {
        a[i][r]='$';
        a[i][l]='$';
    } 
}
int main()
{
    int i;
    scanf("%d",&N);
    for(i=N;i>=1;i--)    //打印第几圈。 
    {
        f(i);
    }
    for(i=2*N;i<=2*N+4;i++)    //图形中间的十。 
    {
        a[2*N+2][i]='$';
        a[i][2*N+2]='$';
    }
    print();    //输出 
    return 0;
}

          


点赞(2)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论