蓝桥杯 打印十字图

问题描述

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

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

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

输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2
3
样例输出2
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
提示
请仔细观察样例,尤其要注意句点的数量和输出位置。
 
 
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<math.h>
 6 using namespace std;
 7 char a[1002][1002];
 8 int main()
 9 {
10     int k,s,n;
11     while(~scanf("%d",&k))
12     {
13         s=0; n=5+(4*k);
14         for(int i=0;i<n;i++)
15             for(int j=0;j<n;j++)
16                 a[i][j]='.';
17         for(int i=0;i<k;i++)
18         {
19             for(int j=s+2;j<n-2-s;j++)
20             {
21                 a[s][j]='$';
22                 a[n-1-s][j]='$';
23                 a[j][s]='$';
24                 a[j][n-1-s]='$';
25             }
26             for(int j=s;j<=s+2;j++)
27             {
28                 a[j][s+2]='$';
29                 a[s+2][j]='$';
30                 a[n-1-s-2][j]='$';
31                 a[j][n-1-s-2]='$';
32             }
33             for(int j=n-1-s-2;j<=n-1-s;j++)
34             {
35                 a[n-1-s-2][j]='$';
36                 a[j][n-1-s-2]='$';
37                 a[j][s+2]='$';
38                 a[s+2][j]='$';
39             }
40             s+=2;
41         }s+=2;
42         for(int j=s;j<=s+2;j++)
43         {
44             a[j][s]=a[s][j]='$';
45         }
46         for(int j=s;j>=s-2;j--)
47         {
48             a[j][s]=a[s][j]='$';
49         }
50         for(int i=0;i<n;i++)
51             {
52                 for(int j=0;j<n;j++)
53                     printf("%c",a[i][j]);
54                 printf("
");
55             }
56     }
57     return 0;
58 }
原文地址:https://www.cnblogs.com/assult/p/3561152.html