您的位置:首页 > 其它

历届试题 打印十字图

2018-03-22 17:47 148 查看
  历届试题 打印十字图  

时间限制:1.0s   内存限制:256.0MB
      

问题描述

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



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

输入格式

一个正整数 n (n<30) 表示要求打印图形的层数。

输出格式

对应包围层数的该标志。

样例输入1

1

样例输出1

      


样例输入2

3

样例输出2



提示

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

 

这个题其实很简单,就是很麻烦,费死那时间了!!!还是不够熟练啊~~

代码:

#include<iostream>
using namespace std;

int main()
{
int num,n;
cin>>num;
n=5+num*4;
char a[150][150];
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]='.';
for(int i=1;i<=n/2-1;i+=2)
{
if(i!=1)
{
a[i][i-1]='$';
a[i][i]='$';
a[i][n-i+1]='$';
a[i][n-i+2]='$';
}
for(int j=i+2;j<=n-i-1;j++)
a[i][j]='$';
}
for(int i=3;i<=n/2+1;i++)
{
a[i][1]='$';
a[i]
='$';
}
a[n/2][n/2+1]='$';
a[n/2-1][n/2+1]='$';
for(int i=n/2;i<=n/2+2;i++)
a[n/2+1][i]='$';
for(int j=1;j<=n/2-1;j+=2)
{
for(int i=j+2;i<=n/2+1;i++)
a[i][j]='$';
}
for(int j=n/2+3;j<=n;j+=2)
{
for(int i=n-j+3;i<=n/2+1;i++)
a[i][j]='$';
}
for(int i=2;i<=n/2-2;i+=2)
{
a[i][i+1]='$';
a[i][n-i]='$';
}
for(int i=1;i<=n/2+1;i++)
{
for(int j=1;j<=n;j++)
cout<<a[i][j];
cout<<endl;
}
for(int i=n/2;i>=1;i--)
{
for(int j=1;j<=n;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: