本题是蓝桥杯往届真题。
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑 Dos 窗口中以字符的形式输出该标志,并能任意控制层数。
上面是对应输出 3 层嵌套的时候。
1 层嵌套如下:
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
输入格式
输入一个整数 n(0≤n≤30),表示图形嵌套的层数。
输出格式
对应层数的该标志。
样例输入1
1
样例输出1
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
样例输入2
4
样例输出2
..$$$$$$$$$$$$$$$$$..
..$...............$..
$$$.$$$$$$$$$$$$$.$$$
$...$...........$...$
$.$$$.$$$$$$$$$.$$$.$
$.$...$.......$...$.$
$.$.$$$.$$$$$.$$$.$.$
$.$.$...$...$...$.$.$
$.$.$.$$$.$.$$$.$.$.$
$.$.$.$...$...$.$.$.$
$.$.$.$.$$$$$.$.$.$.$
$.$.$.$...$...$.$.$.$
$.$.$.$$$.$.$$$.$.$.$
$.$.$...$...$...$.$.$
$.$.$$$.$$$$$.$$$.$.$
$.$...$.......$...$.$
$.$$$.$$$$$$$$$.$$$.$
$...$...........$...$
$$$.$$$$$$$$$$$$$.$$$
..$...............$..
..$$$$$$$$$$$$$$$$$..
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[200][200] = {0};
int x = (9 + 4 * (n - 1)) / 2 + 1;
int y = x;
for(int i = 0;i <= n;i ++){
int x1 = x - i * 2,y1 = y - i * 2;
a[x1][y1] = 1;a[x1][y1 - 1] = 1;a[x1][y1 - 2] = 1;
a[x1 - 1][y1] = 1;a[x1 - 2][y1] = 1;
int x2 = x - i * 2,y2 = y + i * 2;
a[x2][y2] = 1;a[x2][y2 + 1] = 1;a[x2][y2 + 2] = 1;
a[x2 - 1][y2] = 1;a[x2 - 2][y2] = 1;
int x3 = x + i * 2,y3 = y - i * 2;
a[x3][y3] = 1;a[x3][y3 - 1] = 1;a[x3][y3 - 2] = 1;
a[x3 + 1][y3] = 1;a[x3 + 2][y3] = 1;
int x4 = x + i * 2,y4 = y + i * 2;
a[x4][y4] = 1;a[x4][y4 + 1] = 1;a[x4][y4 + 2] = 1;
a[x4 + 1][y4] = 1;a[x4 + 2][y4] = 1;
}//做三角
for(int i = 0;i < n;i ++){
int x1 = x - 4 - i * 2,y1 = y - (i + 1) * 2;
for(int j = y1;(j - y1) < (5 + i * 4);j ++){
a[x1][j] = 1;
}
int x2 = x - (i + 1) * 2,y2 = y + 4 + i * 2;
for(int j = x2;j - x2 < 5 + i * 4;j ++){
a[j][y2] = 1;
}
int x3 = x + 4 + i * 2,y3 = y - (i + 1) * 2;
for(int j = y3;j - y3 < 5 + i * 4;j ++){
a[x3][j] = 1;
}
int x4 = x - (i + 1) * 2,y4 = y - 4 - i * 2;
for(int j = x4;j - x4 < 5 + i * 4;j ++){
a[j][y4] = 1;
}
}//做横竖
for(int i = 1;i <= 9 + (n-1)*4;i ++){
for(int j = 1;j <= 9 + (n-1)*4;j ++){
if(a[i][j] == 0)
printf(".");
if(a[i][j] == 1)
printf("$");
}
printf("\n");
}
return 0;
}