首先,输入的字母决定打印的空格个数 ,空格位数就是输入字母-‘A'位数,可以用for循环进行打印,第一行打印的空格最多是输入字母和'A'的ASCALL之差,每往下一行少打印一个空格,直到不打印空格。
其次,打印左半边的三角形每往下一行多打印一个空格,多打印一个字母,打印的字母位数都是从'A'开始的,所以写个for循环从'A'开始打印每次往后加1个ASCALL进行打印每行比上一行多打印一个字母直到打印出我们输入的字母为止。
最后,打印右边的三角形,右边的三角形和左边打印的差不多,不过先打印的是输入字母少一个ASCALL的字母打印到'A',每行比上一行多打印一个。
#include<stdio.h>
int main()
{
char c;
printf("请输入字母");
scanf("%c",&c);
int b=(int)c-65; //输入的字母和'A'的ASCALL之差
for (int j=0;j<=b;j++)
{
int d=65;
for (int i=j;i<=b;i++) //打印空格
{
printf(" ");
}
for(int k=b-j;k<=b;k++) //左半边三角形
{
printf("%c",d);
d++;
}
int e=d-1;//右半边三角形比左边少一行所以减1
for(int l=b-j;l<b;l++) //右半边三角形
{
e--;
printf("%c",e);
}
printf("\n");
}
return 0;
}