题目描述
由键盘输入一个大写字母(A 到 Z 中的任意一个),输出如下图所示由相关大写字母组成的图形。所输入的字母一定为输出文件的第一个字符(位于图形的左上角),其余部分的字母构成规律和分布由样例给出。
一些关于空白的说明:由于样例不是等宽字符,所以看起来比较丑陋。
51nod并不对比答案中的空白,所以只需要正确输出每行的内容即可。
如果你打算正确输出所有内容,需注意,每行行末没有不可见的空格。
输入格式
输入只有一行,仅为一个大写英文字母。
输出格式
输出文件包含一个如样例所示的图形。注意图形的行数与输入的字母有关,图形的第一行最左侧一定是你输入的那个字母。
样例输入
E
样例输出
EDCBAABCD
DCBAABC
CBAAB
BAA
A
思路
分两个部分输出…CBA,ABC…,空格一行比一行多。
坑点
巧用ASCII码
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a;
cin>>a;
int k=0;
for(int i=0;i<=a-65;i++)
{
int z=a;//Z表示从A到当前字母共有几个。
for(int j=0;j<k;j++)
{
printf(" ");
}
for(int j=z-k;j>=65;j--)//利用ASCII码进行转换。
{
printf("%c",j);
}
for(int j=65;j<z-k;j++)//同上
{
printf("%c",j);
}
z--;
k++;//表示有多少行
printf("\n");
}
return 0;
}