C语言简单for循环---字母树

今天我们来写一个比较简单的C语言for循环的代码,一定要充分理解其循环的条件过程;

   当初学者看到这个图形时可能觉得无从下手,其实对于循环语句而言,最重要的就是要弄清楚他的循环过程,我们不妨一步一步来拆解这个图形。

首先我们不难观察出这个图形是对称的,因此我们可以以“A"为轴将这个图形分为两部分来看。

       先看左半部分,首先我们要解决的问题就是空格问题,那么如何输入这些空格,又应该输入多少呢?通过观察我们可以发现:每一行空格数=26-所在行数,那么空格问题就解决了;其次为递减的字母数列,通过观察我们可以发现左半部分每一行的字母数(包含’A')有每一行的行数个;

再看右半部分,我们只需考虑B递增如何实现即可。从B一直递增所在行-1个,找出规律后我们便可以尝试写代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
    int a = 0, b = 0;//计数变量
    char c = 'A', d = 'B';//构成字母树所需变量
    for (a = 1; a <= 26; a++) {//第一层循环--行数循环,需要26行
        for (b = 1; b <= 26-a; b++) {//第二层循环即需要找出每一行中的循环规律
            //首先要有足够的空格,找出每一行空格与行数有什么对应关系,每一行需要打印多少空格
            printf(" ");
        }//紧接着考虑字母应该如何表示出来,以中间的A为分割线,先考虑左侧,存在递减关系,找出字母个数与行数之间的关系
        for (c = 'A' + a - 1; c >= 'A'; c--) {
            printf("%c", c);
        }//最后考虑A右侧部分,观察可得存在递增关系,找出其分布规律,即为循环条件
            for (d = 'B'; d <= 'A' + a - 1; d++){
                printf("%c", d);
        }printf("\n");//最后不要忘记每循环完成一行应该换行
    }return 0;
}

如果目前还不能完全理解可以顺着流程多走几遍,加深理解,遇到相似的问题可以模仿着来写;只有自己多练才能真正掌握和理解;

若已经掌握,同学们可以尝试下图,看看能否实现目的

下期我们继续学习我们该如何通过C语言实现如上目的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值