XTU OJ 1137

 

Description

题目描述

打印一个字母圣诞树。

输入

第一行是一个整数K,表示样例的个数。以后每个样例是一个大写英文字母,占一行。

输出

输出对应的字母圣诞树,每行末尾没有空格,每个圣诞树的最后一行前无空格。

样例输入
5
A
B
C
D
E

样例输出
 A
AAA
  A
 AAA
  B
BBBBB
   A
  AAA
   B
 BBBBB
   C
CCCCCCC
    A
   AAA
    B
  BBBBB
    C
 CCCCCCC
    D
DDDDDDDDD
     A
    AAA
     B
   BBBBB
     C
  CCCCCCC
     D
 DDDDDDDDD
     E
EEEEEEEEEEE

 我的思路是将整个一行一行分奇偶行来打印,注意:

1.是从0开始数

2.跳过回车符‘\n’

3.输入满K个才跳出

#include<stdio.h>
int main()
{
    char sel[]={
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
    };
    int K;
    scanf("%d",&K);
    while(1){
        char ch;
        scanf("%c",&ch);
        if(ch=='\n') continue;
        int i = ch - 'A' + 1;
        int nu=1;
        for(int k=0;k<i*2;k++){
            if(k%2==0){
                for(int t=0;t<i;t++) printf(" ");
                printf("%c",sel[k/2]);
                printf("\n");
            }
            else {
                for(int t=0;t<i-nu;t++) printf(" ");
                for(int tt=0;tt<2*nu+1;tt++){
                    printf("%c",sel[(k-1)/2]);
                }
                nu++;
                printf("\n");
            }
            
        }
        K--;
        if(!K) break;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值