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;
    }
  • 相关阅读:
    subtext 安装PythonIDE -Anaconda
    Python--DBUtil
    python操作oracle数据库-查询
    Python 离线工作环境搭建
    Scrapy-下载中间件
    centos安装 Anaconda3及使用
    Scrapy爬取人人网
    海明距离
    中心极限定理
    最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
  • 原文地址:https://www.cnblogs.com/search-the-universe/p/holiday-2.html
Copyright © 2011-2022 走看看