今天我们继续巩固C语言中for循环的用法,解决昨天留下的问题--如何利用代码完成一个小树图形呢?
拿到图形,若想将他通过C语言表示出来,首先要做的就是观察他是如何构成的。
有了昨天的经验,我们可以将该图形分为三部分--小三角、大三角、下面的树干。
首先我们看看小三角该如何完成:①需要打出相应的空格;那么如何实现呢?我们可以思考空格与行数的关系,易得空格数=9-所在行数;②需要打出相应数量的‘*’,通过观察我们发现每一行的‘*’个数为2*所在行数-1;
紧接着是大三角的完成,与小三角有着相同的过程,同学们可以自行尝试;
最后是下面树干部分的完成;之一部分相对简单,因为他每一行的构成是相同的,我们只需构造出每一行的元素,让他循环九行即可。通过观察我们可以发现每一行都是七个空格和三个‘*’;
最后我们可以写出代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, x = 0, y = 0, z = 0;//命名足够的变量为后面做准备
for (a = 1; a <= 5; a++) {//第一个大循环针对上面的小三角,搞清楚循环的行数
for (b = 1; b <= 9 - a; b++) {//‘*’前要准备足够的空格,空格数=9-所在行数
printf(" ");
}
for (d = 1; d <= 2 * a - 1; d++)//用‘*’打出树的主体部分,‘*’个数=2*所在行数-1
{
printf("*");
}printf("\n");//注意每行完成后要换行
}
for (c = 1; c <= 9; c++) {//第二个大循环针对下面的大三角,行数为9行
for (e = 1; e <= 9 - c; e++) {//同上,打出相应空格
printf(" ");
}
for (f = 1; f <= 2 * c - 1; f++) {//打出‘*’构成的树的主体部分
printf("*");
}printf("\n");//注意换行
}
for (x = 1; x <= 9; x++) {//第三个大循环针对下面的树干
for (y = 1; x <= 7; x++) {//仅需考虑需要打出9行,每一行都由相同的空格和‘*’构成
printf(" ***\n");
}
}
return 0;
}
注意一下,这里我用的工具是Visual Studio 2022
下期我们要学习用for循环解决简单的“鸡兔同笼”问题,同学们可以尝试以下:鸡兔共有13个头,36只脚,那么鸡兔各自多少只?
同学们可以自己尝试一下,不懂的部分,可以打在评论区!