【问题描述】
根据输入的整数n,输出对称的菱形字母塔。该字母塔有2*n-1行,每一行有若干个空格字符和大写英文字母组成。
【输入形式】
输入一个自然数n(1<=n<=26)
【输出形式】
输出由2*n-1行大写英文字母和空格组成的字母塔,其规律请见样例输出。其中的第n行最左面没有空格,每一行的右侧也没有空格。
【样例输入1】
4
【样例输出1】
【样例输入2】
8
【样例输出2】
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
for(int j=i;j<=n-1;++j)
printf(" ");
char ch=0;
for(int j=0;j<i;++j)
{
ch = 'A'+j;
printf("%c",ch);
}
for(int j=1;j<i;++j)
{
ch = ch-1;
printf("%c",ch);
}
printf("\n");
}
for(int i=n-1;i>0;--i)
{
for(int j=i;j<=n-1;++j)
printf(" ");
char ch=0;
for(int j=0;j<i;++j)
{
ch = 'A'+j;
printf("%c",ch);
}
for(int j=1;j<i;++j)
{
ch = ch-1;
printf("%c",ch);
}
printf("\n");
}
return 0;
}
先看代码,目标是一个菱形字母塔
int main(void)
{
int n,i,j;
char temp;
scanf("%d",&n);
for( i =1; i<2*n; ++i)
{
/空格段 for(j =1; j<= fabs(n-i); ++j) printf(" ");
/左部字母 for (temp ='A'; temp<=((i<=n)?'A'+i-1:'A'+2*n-1-i); ++temp) putchar(temp);
/右部字母 for ( temp = ((i<=n)?'A'+i-2:'A'+2*n-i-2); temp>='A'; --temp) putchar(temp);
printf("\n");
}
return 0;
}
/*输出结果:5
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
*/