sdjzu---8

来源:互联网 发布:linux matlab使用 编辑:程序博客网 时间:2024/04/29 07:12

http://sdjzu.acmclub.com/index.php?app=problem_title&cid=1160&problem_id=F

题目描述

人们都喜欢8这个数字,手机号希望全是8,车牌号也希望全是8.在这个无发不在的世界,8俨然成为了人们发财的数字。为了以后我们的前途,大家来画8吧,谁画的标准,好看,谁的前途就越好。

输入格式

多组测试数据。每组中有一个字符c(大写字母或者小写字母)和一个整数n,字符表示画笔,整数表示高度。,(5<=n<=20).

输出

画横线总是一个字符粗,竖线随着总高度每增长6而增加1个字符宽.当总高度从5增加到6,其竖线宽度从1增长到2.下圈高度不小于上圈高度,但应尽量接近上圈高度,且下圈的内径呈正方形.

样例输入

A 7
B 8

样例输出

  AA
AA  AA
AA  AA
  AA
AA  AA
AA  AA
  AA
  BBB
BB   BB
BB   BB
  BBB
BB   BB
BB   BB
BB   BB
  BBB

这道题本来打算用for循环写,直接打印出来,不过就是没写出来。。。

代码实现:

#include<iostream>#include<iomanip>using namespace std;int main(){    int N,n,t,w,n1,n2,hw,i;    char ch;    while(cin>>ch>>n)    {        w=n/6+1;  //记录竖线宽度        t=n-3;    //根据t的值判断下圈的宽度        n1=t/2; //上圈宽度        if((t%2)==0)            n2=t/2;//n2为下圈宽度        else if((t%2)==1)            n2=t/2+1;        hw=n2;   //记录横线宽度        cout<<setfill(' ')<<setw(w)<<' '<<setfill(ch)<<setw(hw)<<ch<<endl;//第一行        for(i=0; i<n1; i++)                                          //上圈            cout<<setfill(ch)<<setw(w)<<ch<<setfill(' ')<<setw(hw)<<' '                <<setfill(ch)<<setw(w)<<ch<<endl;        cout<<setfill(' ')<<setw(w)<<' '<<setfill(ch)<<setw(hw)<<ch<<endl;// 中间一行        for(i=0; i<n2; i++)                                            //下圈            cout<<setfill(ch)<<setw(w)<<ch<<setfill(' ')<<setw(hw)<<' '                <<setfill(ch)<<setw(w)<<ch<<endl;        cout<<setfill(' ')<<setw(w)<<' '<<setfill(ch)<<setw(hw)<<ch<<endl;  //最好一行    }    return 0;}


0 0