【蓝桥杯】打印十字图(图形规律)

题目描述

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

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

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

输入1 ,则输出

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

输入

一个正整数 n (n< 30)  表示要求打印图形的层数。 

输出

对应包围层数的该标志。 

样例输入

3

样例输出

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

提示

请仔细观察样例,尤其要注意句点的数量和输出位置。 

思路

从最外层开始打印‘$’, 先打印横线和竖线上的‘$’,再打印四个角的直角‘$’

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char s[220][220];
 4 int main()
 5 {
 6     int n;
 7     scanf("%d",&n);
 8     int o=n*4+5;
 9     int l=2,a=0;
10     memset(s,'.',sizeof(s));
11     n++;
12     while(n--)
13     {
14         for(int i=l; i<o-l; i++)
15             s[a][i]=s[i][a]=s[i][o-a-1]=s[o-a-1][i]='$';
16         s[a+1][l]=s[l][a+1]=s[l][l]='$';//左上
17         s[a+1][o-1-l]=s[l][o-a-2]=s[l][o-1-l]='$';//右上
18         s[o-a-2][l]=s[o-1-l][a+1]=s[o-1-l][l]='$';//左下
19         s[o-a-2][o-1-l]=s[o-1-l][o-a-2]=s[o-1-l][o-1-l]='$';//右下
20         a+=2;
21         l+=2;
22     }
23     for(int i=0; i<o; i++)
24     {
25         for(int j=0; j<o; j++)
26             putchar(s[i][j]);
27         putchar('\n');
28     }
29     return 0;
30 }
posted @ 2018-03-17 10:55  LesRoad  阅读(1762)  评论(0编辑  收藏  举报