hdu1256

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

Sample Input
2
A 7
B 8
 Sample Output
这道题是字符串类型的题目,可以先在草稿本上画出,求出竖线的宽度与给出高度的关系以及横线宽度与高度的关系(考虑高度的奇偶)。在需要输出的图中,就只由第一行图案和第二行图案构成,所以可以先构建两个字符串,再在特定的位置输出字符串。
 1、封装出出两个字符串,设竖线的宽度为x,横线宽度为y,即可写出两个字符串,注意在字符串末尾加"\0";2、一行一行的输出字符串。在特定的位置输出。
#include<stdio.h>
#include<string.h>
char a[500007], b[500007];
int main()
{
    int T;
    scanf("%d", &T);
    while(T--){
        getchar();
        char ch;
        int n;
        scanf("%c%d", &ch, &n);
        int x, y;
        x = 1 + n / 6;
        y = n & 1 ? (n - 3) / 2 : (n - 3) / 2 + 1;
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        int i, j;
        for(i = 0; i < x; i++)
            a[i] = ' ';
        for(j = 0; j < y; j++)
            a[x + j] = ch;
        a[x + y] = '\0';
        for(i = 0; i < x; i++)
            b[i] = ch;
        for(j = 0; j < y; j++)
            b[x + j] = ' ';
        for(i = 0; i < x; i++)
            b[x + y + i] = ch;
        for(i = 0; i < n; i++){
            if(i == 0 || i == n - 1 || i == (n & 1 ? n / 2 : n / 2 - 1))
                puts(a);
            else
                puts(b);
        }
        if(T != 0)
            puts("");
    }
    return 0;
}

转载于:https://www.cnblogs.com/qiuhua7777/p/9041917.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值