#include <stdio.h> int main() { int i,j; //用于计数 char ch ; char ch1 = 'A';//从ch1开始 char ch2; printf("请输入一个大写字母:"); ch = getchar(); for(i = 0; i < ch-'A'+1; i++) //行数 { for(j = 0; j < ch-'A'+1-i; j++) //每行的空格数 { printf(" "); } for(j = 0; j < 2*(i+1)-1; j++) { if(j <= i)//前半段 { printf("%c",ch1+j); //通过 j++实现字母的递增 ch2 = ch1+j-1; //接收累加结束时最大的值 } if(j > i) //后半段 { printf("%c",ch2--); //通过ch--实现递减 } ch1 = 'A'; //重置循环初始值 } printf("\n"); } return 0; }
注:与其它金字塔题型相比,此题较为复杂一下,在金字塔题型中更有代表性
思路:通过循环控制行数与空格数,再考虑实现字母递增(在考虑递增的同时,尽量不要用控制循环的参数,容易导致循环次数改变此类的错误)