今天我们来写一个比较简单的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语言实现如上目的。