题解 | #超级圣诞树#
超级圣诞树
https://www.nowcoder.com/practice/470d26c9a73e4e17be8cc45cac843423
#include<stdio.h> int main() { int n = 0; scanf("%d",&n); int row = 3; int col = 5; int i,j,k; char tree[400][800] = {" * "," * * ","* * *"};//题目的最大空间范围 for(i=0; i<n-1; i++)//判断复制几个三角形 { for(j=0; j<row; j++)//判断需要复制几行 { for(k=0; k<col; k++)//判断一行需要复制几列 { tree[row+j][k]=tree[j][k];//复制第一个三角形 tree[row+j][k+1+col]=tree[j][k];//复制第二个三角形 } } for(j=0; j<row; j++)//把原来的三角形还原成空格 { for(k=0; k<col; k++) { tree[j][k]=' '; } } for(j=0; j<row; j++)//把左下角的三角形复制到上方正中间 { for(k=0; k<col; k++) { tree[j][k+row]=tree[j+row][k]; } } row *= 2; col = col*2+1; } //打印圣诞树树帽 for(j=0; j<row; j++) { for(k=0; k<col; k++) { if(tree[j][k]=='*') printf("%c",tree[j][k]); else printf(" "); } printf("\n"); } //打印树柄 for(i=0; i<n; i++) { for(j=0; j<row-1; j++) { printf(" "); } printf("*\n"); } return 0; }