题解 | 圣诞树
圣诞树
https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
//| | * | | //(3' ')+[2' '+'*'+2' ']+(3' ')
//| | * * | | //(3' ')+[' '+'*'+' '+'*'+' ']+(3' ')
//| |* * *| | //(3' ')+['*'+' '+'*'+' '+'*']+(3' ')
//| * | | * | //[](' ')[]
//| * * | | * * | //[](' ')[]
//|* * *| |* * *| //[](' ')[]
//| | * | | //()[2' '+'*'+2' ']()
//| | * | | //()[2' '+'*'+2' ']()
//树的数目增大时,两侧增加(' '),树间增加(' '),底部增加行()[](),但实际上打印完树叶就可以换行了,因此右侧空格不必管
for(int i=1;i<=n;i++){//n排小树
//树叶部分
for(int left=1;left<=n-i;left++){
//打印左侧空格()次数
printf(" ");
}
for(int tree=1;tree<=i;tree++){
//打印树[]和树间空格()次数
printf(" * ");
}
printf("\n");//打印完一排树
for(int left=1;left<=n-i;left++){
//打印左侧空格()次数
printf(" ");
}
for(int tree=1;tree<=i;tree++){
//打印树[]和树间空格()次数
printf(" * * ");
}
printf("\n");//打印完一排树
for(int left=1;left<=n-i;left++){
//打印左侧空格()次数
printf(" ");
}
for(int tree=1;tree<=i;tree++){
//打印树[]和树间空格()次数
printf("* * * ");
}
printf("\n");//打印完一排树
}
//树干部分
for(int i=1;i<=n;i++){
for(int j=1;j<=n-1;j++){
//打印左侧空格
printf(" ");
}
printf(" * \n");
}
}
return 0;
}