请打印输出一个字符金字塔,字符金字塔的特征请参考样例
输入描述:
输入一个字母,保证是大写
输出描述:
输出一个字母金字塔。
输入
C
输出
A ABA ABCBA
题目解析:本题难点在于首先是一个字符形式的金字塔,因此要char定义一个字符并输入,运用循环的for语句,其次,要有ABA这种先增加后减少的形式,因此金字塔分为增加部分和减少部分。
1.首先定义并且输入字符
#include<iostream>
using namspace std;
int main(){
char s,a;
a='A';
cin>>s;
int sum=s-'A'+1;//比如C-'A'+1就是3;运用ASCLL表来算出输入字符与大写字母'A'之间的差距,用于后面的循环中。
2.先来表示金字塔的前半部分
for(int i=1;i<=sum;i++){
a='A';
//输出空格
for(int j=1;j<=sum-i;j++)
cout<<" ";
//输出增加的字符
for(int k=1;k<=i;k++){
cout<<a;
a++;
}
3.最后来表示金字塔的后半部分
a--;//(在上面增加金字塔最后a的值多增加了一次,要减掉,比如s=C,i=2时,最后a++完变成C,要减掉1,变成B,在进行下面的程序)
for(int k=i+1;k<=2*i-1;k++){
a--;
cout<<a;
}
cout<<endl;
}
return 0;
}
最后,总代码如下:
#include<iostream>
using namespace std;
int main(){
char s,a;
a='A';
cin>>s;
int sum=s-'A'+1;
for(int i=1;i<=sum;i++){
a='A';
//输出空格
for(int j=1;j<=sum-i;j++)
cout<<" ";
//前半部分增加的
for(int k=1;k<=i;k++){
cout<<a;
a++;
}
//后半部分减小的
a--;//减去上一轮最后那个a++的值比如输入C 则i=2时,a=B,a++之后变成C,下一轮开始要减掉1,从B开始。而不会是从C开始就是ABA,而不是ABB
for(int k=i+1;k<=2*i-1;k++){
a--;
cout<<a;
}
cout<<endl;
}
return 0;
}