hdu 1256 "8" 格式题

来源:互联网 发布:非凡软件站手机版 编辑:程序博客网 时间:2024/06/03 21:14

题意:

给一个字符,再给一个高度n ,输出一个由该字符组成的8字形,且字符的宽度h<5时为1,到6时为2,12时为3,以此类推
并且''8''的下面必须是正方形

分析:

''8''可以拆分成中间线和上下矩形的竖线 而中间线的长度由正方形长度决定 
    AA -------------------- 中间的部分
AA    AA—————— 竖线的部分
AA    AA
    AA----------------------
AA    AA
AA    AA
    AA----------------------

输出顺序: 中间 -> 上矩形竖线->中间->下矩形竖线->中间

代码:

#include<iostream>

#include<cstring>
#include<algorithm>
#define cls(a,x) memset(a,x ,sizeof(a))
using namespace std;
char s1[1000],s2[1000];  //s1单词宽的字符串  s2正方形宽的字符串
int h,h1,h2,wide;   // h总高 h1上矩形中间长度  h2下矩形中间长度 wide 单词长度
char p;
void  first(){  // 中间输出 
 for(int i=1;i<=wide;i++)
    cout<<" ";
 cout<<s2<<endl;
}
void second() //  竖边的输出 
{  for(int j=1;j<=h1;j++)
     {  cout<<s1;
        for(int i=1;i<=h2;i++) cout<<" ";
        cout<<s1<<endl;
     }
}
int main(){
int t,T;
cin>>t;
T = t; 
while(t--)

if(t+1!=T) cout<<"\n";//格式 除了第一个 后面开头都空行 
 
cls(s1,0);
cls(s2,0);
cin>>p>>h;
h1=(h-3)/2;
h2= h - h1 -3;
wide = 1 + h/6;
memset(s1,p,wide);
memset(s2,p,h2);

first();
second();
first();
h1 = h2;
second();
first();
}
return 0;
原创粉丝点击