行业知识
“圣诞树图案的打印~C语言”
2026-11-07 21:37:52
来源:互联网转载
圣诞树图案的打印~C语言
- 题目原文:圣诞树
- 题目分析
- 树枝第一步,打印空格。
- 树枝打印第二步:打印图案
- 打印树干第一步,打印空格
- 打印树干第二步,打印图案
- 完整代码
题目原文:圣诞树
题目分析
首先我们把树分为上下两部,树干和树枝。仔细观察树枝我们发现,不管层级n是多少的圣诞树,它们的树枝都是由类似于小金字塔构成的。
例如:层数n == 1,树枝部分有1层,第一场是1个金字塔图案。
n == 2,树枝部分有2层,第一层有1个金字塔,第2层有2个金字塔。
n == 3,树枝部分有3层,第一层有1个,第二层有2个,第三层有3个…
树枝的部分,index.php/tags-653.html" >可以用循环来实现。
树枝第一步,打印空格。
n == 1,打印空白个数d == 2 , 1 , 0
n == 2,d == 2+3, 4 , 3 , 2 , 1 , 0
n == 3,d==2+3+3, 7 , 6 , … 3 , 2 , 1 ,0
规律:d == 3 * n - 1;
即每一层金字塔空白字符的打印都比上一次多3个 。
树枝打印第二步:打印图案
以n == 2为例:
打印第1层金字塔
int d = 3 * n;for (int a = d -1;a>0;a--)//{printf(" ");}for (int k = 1; k printf("* ");//把第一层当作“* ”来打印,原因是n1时(举例n==2),第二层//有2个金字塔,它们之间有5个空格。}printf("\n");for (int a = d - 2; a > 0; a--)//同上{printf(" ");}for (int k = 1; k printf("* * ");}printf("\n");for (int a = d-3; a 0; a--)//同上{printf(" ");}for (int k = 1; k printf("* * * ");}printf("\n");int n = 0;//层数 scanf("%d", &n);int d = 3 * n;//a和d用于控制最开始的空白数;for (int i = 1; i for (int a = d -1;a0;a--)//{printf(" ");}for (int k = 1; k printf("* ");}printf("\n");for (int a = d - 2; a 0; a--)//同上{printf(" ");}for (int k = 1; k printf("* * ");}printf("\n");for (int a = d-3; a 0; a--)//同上{printf(" ");}for (int k = 1; k printf("* * * ");}printf("\n");d = d - 3;}}printf(" ");}for (int i = 1; i printf(" ");}printf("*\n");c++;}int c = 1;int n = 0; scanf("%d", &n);int d = 3 * n;for (int i = 1; i for (int a = d -1;a0;a--){printf(" ");}for (int k = 1; k printf("* ");}printf("\n");for (int a = d - 2; a 0; a--){printf(" ");}for (int k = 1; k printf("* * ");}printf("\n");for (int a = d-3; a 0; a--){printf(" ");}for (int k = 1; k printf("* * * ");}printf("\n");d = d - 3;}while (cfor (int i = 1; i printf(" ");}printf("*\n");c++;}return 0;}
上一篇:域名备案后怎么解析?