打印十字图
#include<bits/stdc++.h>
using namespace std;
const int N=150;
int a[N][N];
int main(void)
{
int n,m,i,j,k,mid;
cin>>n;
m=5+n*4; // 图的边长
mid=(5+n*4)/2+1;
for(k=1;k<=n*2+1;k+=2) // 处理每层的四条边
{
for(i=k+2;i<=m-k-1;i++)
{
a[k][i]=1;
a[m-k+1][i]=1;
a[i][k]=1;
a[i][m-k+1]=1;
}
}
for(i=2;i<mid;i+=2) // 处理四个角
{
k=m-i+1;
a[i+1][i]=1;a[i][i+1]=1;a[i+1][i+1]=1; // 从(i,i)点向三个方向扩展,下面类似
a[k-1][k]=1;a[k][k-1]=1;a[k-1][k-1]=1;
a[k-1][i]=1;a[k][i+1]=1;a[k-1][i+1]=1;
a[i+1][k]=1;a[i][k-1]=1;a[i+1][k-1]=1;
}
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
printf("%c",a[i][j]?'$':'.');
}puts("");
}
return 0;
}
Tips:可以只运行部分代码并查看结果来了解每段代码的作用