zoukankan      html  css  js  c++  java
  • 蓝桥杯 历届试题 打印十字图

      题目如下:
     
    问题描述

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..

    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    ..$$$$$..
    ..$...$..
    $$$.$.$$$
    $...$...$
    $.$$$$$.$
    $...$...$
    $$$.$.$$$
    ..$...$..
    ..$$$$$..
    样例输入2
    3
    样例输出2
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。
    ---------分割线---------
      在看到这个题目的时候其实是一脸懵逼,“.”和“$”把眼睛都看花了,后来按照提示把“.”在纸上画了,如下图所示:

      将就着看吧,哈哈!

      分析图后,了解到行列数与层数的关系:5*n+4。我使用了2维数组,现将5*n+4行5*n+4列填满‘$’字符,然后画出点。我是这样处理的,先将四个角的正方形画出来,然后根据层数画出十字圈,起点为空心十字的中心点的左上角,可以发现上图中坐标的规律,终点类似推出规律(十字圈分2部分画出,第一部分是8条短线,第二部分是4条长线)。具体看代码吧:

      

    #include<stdio.h>
    #define maxnumber 30*4+5  
    int main()
    {
        int i,j,x,start,end;
        char a[maxnumber][maxnumber];
        int b[4];
        scanf("%d",&x);
        for(i=0;i<x*4+5;i++)
            for(j=0;j<x*4+5;j++)
                a[i][j]='$';
        b[0]=0;b[1]=1;b[2]=4*x+3;b[3]=4*x+4;
        start=3;end=4*x+1;
        for(i=0;i<4;i++)
            for(j=0;j<4;j++)
                a[b[i]][b[j]]='.';
        for(i=0;i<x;i++)
        {
            for(j=0;j<3;j++)
            {
                a[start][start-j]='.';
                a[start-j][start]='.';
                a[start][end+j]='.';
                a[start-j][end]='.';
                a[end][start-j]='.';
                a[end+j][start]='.';
                a[end][end+j]='.';
                a[end+j][end]='.';
            }
            for(j=0;j<end-start;j++)
            {
                a[start-2][start+j]='.';
                a[start+j][start-2]='.';
                a[end+2][start+j]='.';
                a[start+j][end+2]='.';
            }
            start+=2;
            end-=2;
        }
        for(i=0;i<x*4+5;i++)
        {
            for(j=0;j<x*4+5;j++)
                printf("%c",a[i][j]);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    阿里云内网和公网NTP服务器和其他互联网基础服务时间同步服务器
    python3 tkinter
    未来的趋势发展 802.11v网络协议解析
    如何挑选好料酒?
    bootstrap
    结巴中文词频分析
    Covariance 协方差分析
    调整的R方_如何选择回归模型
    赤池信息量准则 ( Akaike information criterion)
    python蒙特卡洛脚本模拟—挑战者号爆炸概率
  • 原文地址:https://www.cnblogs.com/search-the-universe/p/holiday-2.html
Copyright © 2011-2022 走看看