题解 | #圣诞树#
圣诞树
https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2
#include <stdio.h> #include<math.h> int one(){printf("* "); return 0;}/*小圣诞树第一行*/ int two(){printf("* * "); return 0;}/*小圣诞树第二行*/ int three(){printf("* * * "); return 0;}/*小圣诞树第三行*/ int main() { int n; while(scanf("%d",&n)!=EOF) for(int i=1;i<=3*n;i++)/*树叶部分共打印3*n行*/ { int p=3*n-i; while(p!=0){printf(" "); p--;} /*打印第一个*号前的空格*/ double a=ceil((double)i/3);/*用向上取整函数确定小圣诞树循环次数*/ int b=i%3;/*确定小圣诞树的行数*/ for(int j=1;j<=a;j++) switch(b)/*根据行数打印对应字符*/ { case 1:one();break; case 2:two();break; default:three();break; } printf("\n"); } for(int i=1;i<=n;i++)/*打印树根部分*/ { for(int j=1;j<=3*n-1;j++) printf(" "); printf("*\n"); } return 0; }