#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; }
注:與其它金字塔題型相比,此題較為復雜一下,在金字塔題型中更有代表性
思路:通過循環控制行數與空格數,再考慮實現字母遞增(在考慮遞增的同時,盡量不要用控制循環的參數,容易導致循環次數改變此類的錯誤)