打印圣诞树

您所在的位置:网站首页 c语言for循环打印圣诞树 打印圣诞树

打印圣诞树

2023-07-16 02:46| 来源: 网络整理| 查看: 265

题目1

分析

1. 要打印这个圣诞树,无非就是打印树干与树冠这两个部分。 2. 要打印树干会发现非常容易,经过观察很容易发现规律。可以通过循环实现,每次循环的时候先打印若干个空格,再紧接着打印一个星号即可。 3. 令人头疼的是这个树冠该怎么打印?这其实事实上相当于是在找规律。首先可以肯定的一点就是:肯定是得一行一行这么打印,那也就是说,肯定得是以循环的方式,树冠有多少行,那就意味着要循环多少次。 4. 然后打印树冠的每一行的时候(就是单次循环),首先先打印空格,打印空格的个数也是有规律可循,这个不难。 5. 最为核心的问题在于这个星号的排列该怎么样子打印出来,这时候我想到了一个办法:不把单个星号看成一个整体,而是把六个字符合起来,看成一个整体。具体意义如下图

6. 这样子你会发现,第1.4.7...行的整体都是一样的,第2.6.8...行的整体都是一样的,第3.7. 9...行的整体都是一样的,因此可以得知,这个整体无非就是这三种样子,并且每一行用哪个整体的形式你去那一行是第几行决定。 7. 接下来要考虑的就是,在每一行的打印当中,那个整体到底要打印几次,这个也是很容易找到规律的。至此,树冠的规律已经被摸清楚了。

具体代码实现 #include int main() { int h = 0; scanf("%d",&h); //打印树冠 int i = 0; int j = 0; for (i = 0; i < 3 * h; i++) { //打印空格 for (j = 0; j < (3 * h - (i + 1)); j++) { printf(" "); } //打印星号整体 int k = i / 3 + 1;//计算循环"整体"的次数 if (i % 3 == 0) { for (j = 0; j < k; j++) { printf("* "); } } else if (i % 3 == 1) { for (j = 0; j < k; j++) { printf("* * "); } } else { for (j = 0; j < k; j++) { printf("* * * "); } } printf("\n"); } //打印树干 for (i = 0; i < h; i++) { for (j = 0; j < (3 * h - 1); j++) { printf(" "); } printf("*\n"); } return 0; } 经验总结

这种打印图形的题目,事实上其实就是根据平面图形找规律,一旦规律被发现,那么用计算机语言实现起来会很容易 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3