感觉好绕人阿,其实我不想用负值字符的,但是根据自己的思路,输入AB这些时候,凌乱了,char一个k字符,让其小于等于行数i,行数i是数字,思路乱掉,所以干脆让所有数字换成字符
#include <stdio.h>
int main()
{
char c;
scanf("%c",&c);//c为输入的大写字母
for(int i='A';i<=c;i++)//i<=c就等于数字i<行数n
{
for (int j=1; j<=c-i;j++ )//n-i就等于每行空格数
{
printf(" ");
}
for ( int k='A';k<=i;k++ )//k<=i,相当于每行输出顺字母数等于行数n
{
printf("%c",k);
}
for (int j = 0; j<(i-'A'); j++) {//就是J小于每行最大的数字,第一行不符合,直接跳出,
printf("%c", i - j - 1);
}
printf("\n");
}
return 0;
}
int main()
{
int n=0;
char c;
scanf("%c",&c);
n=c-'A'+1;
for(int i=1;i<=n;i++)
{
for(int j=n-i;j>=1;j--)
{
printf(" ");
}
for(int k=n;k>n-i;k--)
{
printf("%c",c-k+1);
}
for(int k=n-i+1;k<n;k++)
{
printf("%c",c-k);
}
printf("\n");
}
return 0;
}