历届试题 打印十字图 (蓝桥杯)

来源:互联网 发布:威锋认证的淘宝店 编辑:程序博客网 时间:2024/04/26 07:53
问题描述

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

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

输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。
样例输入1
1
样例输出1
样例输入2
3
样例输出2
提示

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


这题找下规律,一点一点写,麻烦没啥,做出来就OK

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[1000][1000]={0};int main(){int n;cin>>n;int sum=n;for(int i=1;i<=sum;i++){n=sum-i+1;   int j;for( j=2+(i-1)*2;j<=6+(i-1)*2+(n-1)*4;j++){a[(i-1)*2][j]=1;} a[(i-1)*2+1][j-1]=1; a[(i-1)*2+2][j-1]=1;a[(i-1)*2+2][j]=1; j++;int k;for(k=2+(i-1)*2;k<=6+(i-1)*2+(n-1)*4;k++)  a[k][j]=1;  j--;  a[k-1][j]=1; j--;a[k-1][j]=1; a[k][j]=1; for(k++;j>=2+(i-1)*2;j--) a[k][j]=1; a[k-1][j+1]=1; a[k-2][j]=1; a[k-2][j+1]=1; k-=2;j--; for(;k>=2+(i-1)*2;k--) a[k][j]=1; a[k][j+2]=1; a[k+1][j+1]=1; a[k+1][j+2]=1;}    for(int i=sum*2;i<5+sum*2;i++)    a[i][2+sum*2]=1;    for(int i=sum*2;i<5+sum*2;i++)     a[2+sum*2][i]=1;    for(int i=0;i<9+(sum-1)*4;i++){for(int j=0;j<9+(sum-1)*4;j++)if(a[i][j])cout<<'$';else cout<<'.'; cout<<endl;}return 0;}

0 0
原创粉丝点击