字符金字塔(c++)


 

请打印输出一个字符金字塔,字符金字塔的特征请参考样例

输入描述:

输入一个字母,保证是大写

输出描述:

输出一个字母金字塔。

输入

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值