#include<stdio.h>
int main(void) {
    int length, temp;

    while (~scanf("%d", &length)) {
        if (length % 2)
            temp = 1;
        else
            temp = 2;

        for (int i = 0; i < length / 2; i++) {
            for (int j = 1; j <= i; j++) {
                printf(" ");
            }

            for (int k = length - 2 * i; k > 0; k --) {
                if (k == length - 2 * i || k == 1)
                    printf("*");
                else
                    printf(" ");
            }

            printf("\n");
        }

        for (int i = 0; i < (temp == 1 ? length / 2 : length / 2 - 1); i++) {
            printf(" ");
        }
        if (temp == 1) {
            printf("*\n");
        }
        else {
            printf("**\n");
        }
        for (int i = 0; i < (temp == 1 ? length / 2 : length / 2 - 1); i++) {
            for (int j = length / 2 - temp - i; j > 0; j--) {
                printf(" ");
            }

            for (int k = (temp == 1 ? 3 : 4) + 2 * i; k > 0; k--) {
                if (k == (temp == 1 ? 3 : 4) + 2 * i || k == 1)
                    printf("*");
                else
                    printf(" ");
            }
            printf("\n");
        }

    }

    return 0;
}

当时没想到可以拆分成两条线,只想到了上面是个三角形,下面也是个三角形,所以有了这些代码