C语言| 字母金字塔

【思路分析:】
1 考虑左边的空格+大写字母,而大写字母 先升序后降序输出
2 升序输出的字母的个数==行数==最大字母在26个英文字母中排的位置序号
3 降序输出的字母 == 升序输出的字母个数-1

编程顺序:
1 定义循环变量i,表示字母的顺序,循环变量j 表示空格数和字母数,所以j=0;
2 涉及到字母,定义一个最大字母的字符变量k,用数组ch[26]放26个字母

3 第一个for循环,i为遍历字母的循环变量,把26个字母按顺序放入数组中ch[i] = 'A'+i;
4 while循环,利用逻辑非||判断用户的输入内容是否合理
5 第二个for循环,寻找n的值

6 第三个外置for循环,控制行数,并在内部嵌套3个for循环。
  i for---控制空格数,空格数= 总行数-第i行
  ii for --- 控制升序打印字母, j<i字母在第几个位置,按顺序打印字母
  iii for --- 控制降序打印字母,j<i-1,降序输出ch[i-j-2]

【代码实现】

#include <stdio.h>

int main(void)
{
    int i, j; //循环变量
    int n; //n代表输出的行数,或者说最大字母是26个字母中的第几个字母
    char k; //存储输入的最大字母
    char ch[26]; //存储26个英文字母

    for(i=0; i<26; i++)
    {
        ch[i] = 'A'+i;
    }

    printf("请输入一个大写字母作为字母金字塔的最大字母:");
    scanf("%c", &k);
    getchar(); //吸收回车

    //判断用户输入内容是否合理
    while(k<'A'|| k>'Z')
    {
        printf("输入错误!请重新输入一个大写字母作为字母金字塔的最大字母:");
        scanf("%c", &k);
        getchar(); //吸收回车
    }

    //寻找n的值,判断它在字母表中的位置
    for(i=0; i<26; i++)
    {
        if(k == ch[i])
        {
            n = i + 1; //因为数组的下标从0开始
        }
    }

    printf("根据您的输入,以下是程序为您输出的字母金字塔:\n");

    //外置for循环控制行数
    for(i=1; i<=n; i++)
    {
        //第一个内嵌for循环,控制空格数,同时输出三角形时是一样的
        for(j=0; j<n-i; j++)
        {
            printf(" ");
        }

        //第二个内嵌for循环,控制升序打印字母
        for(j=0; j<i; j++)
        {
            //升序打印字母是按照顺序打印的
            printf("%c", ch[j]);
        }

        //第三个内嵌for循环,控制降序打印字母,比升序少一个,所以-1
        for(j=0; j<i-1; j++)
        {
            printf("%c", ch[i-j-2]); //难点就是找到i-j-2的规律
        }

        printf("\n");

    }

    return 0;
}

【运行结果】

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值