#include <math.h> #include <stdio.h> int main() { int n, i, j, x, y, x1, y1, move; scanf("%d", &n); char a[1000][1000] = {0}; y = 3 * pow(2, n - 1) - 1; a[0][y] = '*'; a[1][y - 1] = '*'; a[1][y + 1] = '*'; a[2][y - 2] = '*'; a[2][y] = '*'; a[2][y + 2] = '*'; //若n大于2则复制上一个三角形到左下角和右下角 for (i = 1; i < n; i++) { move = 3 * pow(2, i - 1) - 1; //左下角 for (x1 = 0; x1 < 3 * pow(2, i); x1++) { //上一个三角形的层数 for (y1 = y - move; y1 <= y + move;y1++) { //从上个三角形的最左边遍历到最右边 a[x1 + move + 1][y1 - move - 1] = a[x1][y1]; } } //右下角 for (x1 = 0; x1 < 3 * pow(2, i); x1++) { //上一个三角形的层数 for (y1 = y - move; y1 <= y + move; y1++) { //从上个三角形的最左边遍历到最右边 a[x1 + move + 1][y1 + move + 1] = a[x1][y1]; } } } for(i=0;i<y+1;i++) { for(j=0;j<3*pow(2,n)-1;j++) { if(a[i][j]=='*') printf("*"); else printf(" "); }printf("\n"); } for(i=0;i<n;i++) { for(j=0;j<=y;j++) { if(j==y) printf("*"); else printf(" "); }printf("\n"); }return 0; }
不想在画图了