7、编写一个程序,用户输入某个大写字母,产生 一个金字塔图案。例如用户输入字母D,则产生如 下图案:
A
ABA
ABCBA
ABCDCBA
更新优化代码:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 char ch;
6 int line,i,j,k;
7
8 printf("请输入一个字符:");
9 scanf("%c",&ch);
10
11 line = ch - 'A'+1;
12
13 for(i=0;i<line;i++){
14 for(j=0;j<line-i;j++){
15 printf("%c",' ');//输出每层空格
16 }
17 for(k=0;k<i;k++){//k=0;k<0:不进入循环
18 printf("%c",'A'+k);//输出顺序字母
19 }
20 printf("%c",'A'+i);//输出中间字母
21 for(;k>0;k--){
22 printf("%c",'A'+k-1);//输出逆序字母
23 }
24 printf("\n");
25 }
26 return 0;
27 }
1 #include <stdio.h>
2
3 int main(void)
4 {
5 char capital,total_line,total_capital,i=0;
6
7 printf("请输入一个大写字母:");
8 scanf("%c",&capital);
9
10 for(total_line = capital-'A';total_line>=0;total_line--)//65为'A',行数
11 {
12
13 for(i=total_line;i>0;i--)//金字塔前空白图案
14 {
15 printf(" ");
16 }//i释放为0
17 for(total_capital=total_line+'A';total_capital<=capital;total_capital++)
18 {
19 printf("%c",'A'+i);
20 i++;
21 }
22 if(i>1)
23 {
24 for(i-=2;i>=0;i--)
25 {
26 printf("%c",'A'+i);
27 }
28 }
29 else
30 {
31 i = 0;
32 }
33
34 for(i=total_line;i>0;i--)
35 {
36 printf(" ");
37 }
38 printf("\n");
39 }
40 return 0;
41 }
执行后效果:
请输入一个大写字母:Z
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA