方法一:基本圣诞树
```c
include
int main() {
int rows = 10; // 圣诞树的行数
for (int i = 0; i < rows; i++) {
// 打印空格
for (int j = 0; j < rows - i - 1; j++) {
printf(" ");
}
// 打印圣诞树的主干
for (int k = 0; k < 2 * i + 1; k++) {
printf("*");
}
printf("\n");
}
// 打印树梢
for (int i = 0; i < 3; i++) {
for (int j = 0; j < rows - 2; j++) {
printf(" ");
}
for (int k = 0; k < 5; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
方法二:使用Sierpinski三角形
```c
include include int main(int argc, char* argv[]) { int n = argc > 1 ? atoi(argv) : 4; float sx = 0, sy = 0; float sdCircle(float px, float py, float r); float opUnion(float d1, float d2); for (int t = -1; t <= 1; t += 2) { for (int i = 1; i <= n * 3; i++) { for (int j = 1; j <= n * 3 - i; j++) { printf(" "); } if (t == -1) { for (int j = 1; j <= n; j++) { printf("* "); } } else if (t == 0) { for (int j = 1; j <= n * 2 - 1; j++) { printf("* "); } } else { for (int j = 1; j <= n * 4 - 3; j++) { printf("* "); } } printf("\n"); } } return 0; } ``` 方法三:左右镜像的Sierpinski三角形 ```c include include int main(int argc, char* argv[]) { int n = argc > 1 ? atoi(argv) : 4; float sx = 0, sy = 0; float sdCircle(float px, float py, float r); float opUnion(float d1, float d2); for (int t = -1; t <= 1; t += 2) { for (int i = 1; i <= n * 3; i++) { for (int j = 1; j <= n * 3 - i; j++) { printf(" "); } if (t == -1) { for (int j = 1; j <= n; j++) { printf("* "); } } else if (t == 0) { for (int j = 1; j <= n * 2 - 1; j++) { printf("* "); } } else { for (int j = 1; j <= n * 4 - 3; j++) { printf("* "); } } printf("\n"); } } return 0; } ``` 这些代码示例展示了如何使用C语言绘制不同样式的圣诞树。你可以根据需要调整`rows`的值来控制圣诞树的大小,或者通过命令行参数来指定层数。