字母菱形 (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;
}