打印字母菱形

字母菱形  (100/100 分数)
题目描述
打印字母菱形


输入描述
输入一个大写字母与一个整数n,1<=n<=26


输出描述
输出如下高度为2n-1的菱形;

注意:A的下一个字母是B,Z的下一个字母是A




样例输入
R 12

样例输出
           R
          S S
         T   T
        U     U
       V       V
      W         W
     X           X
    Y             Y
   Z               Z
  A                 A
 B                   B
C                     C
 B                   B
  A                 A
   Z               Z
    Y             Y
     X           X
      W         W
       V       V
        U     U
         T   T
          S S
           R

#include <iostream>
using namespace std;

int main(){
	int n;
	char c;
	cin >> c >> n;
	//n=1特殊情况 
	if(n==1){
		for(int i=0; i<n-1; ++i){
			cout << ' ';
		}
		printf("%c\n", c);
	}
	else{
		//第一行 
		for(int i=0; i<n-1; ++i){
			cout << ' ';
		}
		printf("%c\n", c);
		//2~n行
		for(int i=0; i<n-1; ++i){
			for(int j=n-2-i; j>0; --j){
				cout << ' ';
			}
			//超过Z的ASCII码则减去26 
			if(c+i+1>90)
				printf("%c", c+i+1-26);
			else
				printf("%c", c+i+1);
			for(int j=0; j<i*2+1; ++j){
				cout << ' ';
			} 
			if(c+i+1>90)
				printf("%c\n", c+i+1-26);
			else
				printf("%c\n", c+i+1);
		} 
		//n+1~倒数第二行
		for(int i=0; i<n-2; ++i){
			for(int j=0; j<i+1; ++j){
				cout << ' ';
			}
			if(c+n-2-i>90)
				printf("%c", c+n-2-i-26);
			else
				printf("%c", c+n-2-i);
			for(int j=2*(n-i)-5; j>0; --j){
				cout << ' ';
			}
			if(c+n-2-i>90)
				printf("%c\n", c+n-2-i-26);
			else
				printf("%c\n", c+n-2-i);
		} 
		//最后一行 
		for(int i=0; i<n-1; ++i){
			cout << ' ';
		}
		cout << c << endl;
	} 
	return 0;
} 
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值