以下解法对于像我一样记不清楚ASCII码的朋友们非常友好。代码见下:

#include<stdio.h>
int main() {
	char c, a;
	int i, j, n;
	scanf("%c", &c);
	n = c - 'A' + 1; //确定总行数n
	for (i = 1; i <= n; i++) { //外层循环——i表示打印的是第i行
		a = 'A'; //每次外层循环都需将a重置,勿忘!
		for (j = 1; j <= n - i; j++) {
			printf(" ");
		}  //打印每行的空格
		for (j = n - i + 1; j <= n; j++) {
			printf("%c", a++);
		}  //打印每行的递增序列
		a -= 2;  //将a表示为递减序列的第一个字母
		for (j = n + 1; j <= n + i - 1; j++) {
			printf("%c", a--);
		}  //打印每行的递减序列
		printf("\n");  //每打印完一行后都需换行,勿忘!
	}
	return 0;
}