c++入门之for三重循环打星星

输入一个整数,输出由星星组成的图像。

img


这个是我的硬伤了,输入4则输入4个头尾相接了菱形,每行间隔要跟样例一样,救救孩子吧。
补充一个样例:

img

img


#include <stdio.h>
int main() {
    int n,i,j,k,m;
    scanf("%d",&n);
    if (n<=0) return 0;
    for (k=0;k<n-1;k++) printf(" ");
    printf("*\n");
    if (n>1) {
        for (i=0;i<n;i++) {
            for (j=2-n;j<=n-2;j++) {
                m=j; if (m<0) m=-j;
                for (k=0;k<m        ;k++) printf(" ");
                printf("*");
                for (k=0;k<2*n-3-m*2;k++) printf(" ");
                printf("*\n");
            }
            for (k=0;k<n-1;k++) printf(" ");
            printf("*\n");
        }
    }
    return 0;
}


#include <stdio.h>
int main() {
    int n,i;

    scanf("%d",&n);
    if (n<=0) return 0;
    printf("  *\n");
    for (i=0;i<n;i++) {
        printf(
            " * *\n"
            "*   *\n"
            " * *\n"
            "  *\n"
        );
    }
    return 0;
}