C语言字母金字塔

代码如下:

#include <stdio.h>

int main()
{
    char ch;
    printf("请输入一个大写字母: ");
    scanf(" %c", &ch);
    if (ch < 'A' || ch > 'Z')  //只能输入大写字母
    {
        return 1;
    }
    int h = ch - 'A' + 1; // 总行数h
    printf("%d\n", h);  //这是检查总行数的可以不写

    for (int i = 1; i <= h; i++)  // 依次对第一,二...行处理,注意从上往下为第1,2...行
    {
        // 这是左边空格,由画图可知,第一行空格数为 总行数 - 1,第i行空格数为 总行数 - 当前行数
        for (int l = 1; l <= h - i; l++)   // l是左边的意思,r是右边的意思
        {
            printf(" ");
        }

        // 左边字母。  中间字母为分界,左边字母数(包括分界上的)为当前行数
        for (int l = 0; l < i; l++)
        {
            printf("%c", 'A' + l);
        }

        // 右边字母。   由图可知右边的字母数(不包括分界上的)是当前行数 - 1
        for (int r = i - 1; r > 0; r--)//右半部分字母是递减的所以r--
        {
            printf("%c", 'A' + r - 1);  //注意,这里要多减一,因为不包括分界上的字母
        }
        printf("\n");
    }
    return 0;
}

关于右边的空格数是可以不管的,反正右边输出完字符后就会换行,看不出来。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值