打印一个金字塔

题目:编写一个程序,提示用户输入大写字母。使用嵌套循环使用金字塔形的格式打印字母。、


分析:字母前是空格,然后是字母,字母后面的空格不用再考虑,只需要加上换行就行。

空格数分别为4->3->2->1->0; 最后一行是没有空格的。所以规律就是 :空格数=总行数-行数

然后打印字符,每次都是从A开始,特别的是关于中间的字母对称,前面是先递增,后面又递减,而每行的中间的字母是第几个就是行数,例:第二行中间的是第二个字母;第三行中间的是第三个字母........

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

以上就是大概的思路;

下面是具体的处理:

1:总行数的话就用 ('E'-'A'+1),不要忘记+1,因为‘E'-'A'=4,输入的是字母,所以采用字母相减求。

2:前面空格的处理,设第i行,空格数=('E'-'A'+1-i);

3:打印字母个数;1,3,5,7,9;

(2*i-1);

4:后面递减处理?

直接字母--;

下面直接上代码

#include<stdio.h>
int main()
{

    int i,j ;
    char c;
    char b = 'A';
    scanf("%c", &c);
    for (i = 1; i <= c - 'A'+1; i++)

    {
        b = 'A';//这里初始化必须写上,才能保证每次从A开始;
        for (j = 1; j <= (c-'A'-i+1); j++)
        {
            printf(" ");
        }
        for (j = 1; j <= (2 * i - 1); j++)
        {
            if (j > i)//条件判断,让后面的递减
            {

                printf("%c", (b-2)); b--;//这里(b-2)易错为b-1;但实际上在else的printf后有c++,
                                           导致输出最中间的字母后递增一个,所以要达到递减效果,必须-2;
            }
            else
            {
                printf("%c", b); b++;

            }
            
        }

        printf("\n");


    }
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值