![](https://i-blog.csdnimg.cn/blog_migrate/a9e61f7dadb5de88207fa16887a37205.png)
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int n;
int m; // 整个图形的 长与宽一致 满足 m=2*k
int k; // 代表 1/4 个图形 k 满足 k=5+2*(n-1)
int i,j,t;
char pho[100][100];
scanf("%d",&n);
if(n)
{
k=5+2*(n-1);
for(i=1;i<=k;i++) // k 表示 1/4 个图形
{
if(i==1||i==2)
pho[1][i]='.';
else
pho[1][i]='$';
}
for(i=1;i<=k;i++)
{
if(i==3)
pho[2][i]='$';
else
pho[2][i]='.';
}
for(i=1;i<=k;i++)
{
if(i==4)
pho[3][i]='.';
else
pho[3][i]='$';
}
for(i=4;i<=k;i++)
for(j=1;j<=k;j++)
{
if(j==1)
pho[i][j]='$';
else if(j==2)
pho[i][j]='.';
else
pho[i][j]=pho[i-2][j-2];
}
m=2*k-1;
for(i=1;i<=k;i++)
{
t=k-1; // 使其 从中间 k 的地点 向头 1跑
for(j=k+1;j<=m;j++)
pho[i][j]=pho[i][t--]; // 先把图形 左右 对折
}
for(i=1;i<=k;i++)
{
for(j=1;j<=m;j++)
pho[m-i+1][j]=pho[i][j]; // 图形 上下 对折
}
// 输出 图形
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
printf("%c",pho[i][j]=='$'?'$':' ');
printf("\n");
}
}
return 0;
}