C语言 打印菱形图案

先画图,找关系,搞明白关系就会做题了



    //数量关系
//             3.空数   4.星数    1.val:辅助值       2.层数
    //   *     3=4-1    1         4=mid               1
    //  ***    2=5-3    3         5=mid+1             2
    // *****   1        5         6=mid+2             3
    //*******  0        7         7=mid+3             4

    // *****   1        5      6              5
    //  ***    2        3      5              6
    //   *     3        1      4              7

#include<stdio.h>



int main() {
    int n = 0;
    scanf("%d", &n);

    if (n == 0 || n % 2 == 0) {
        printf("不是奇数");
        return -1;
    }
    //中值
    int mid = n / 2 + 1;
    //星星数
    int star = 1;
    //空格数
    int space = 0;
    
    //============================
    //打印上半部分
    //============================
    for (int i = 1; i <= mid; i++) {
        //每层基数:中值+i
        int val = mid + i - 1;
        //空格数
        space = val - star;
        for (int j = 0; j < space; j++) {//i+2:1 3 5 7 9
            printf(" ");
        }
        //*数
        for (int j = 0; j < star; j++) {
            printf("*");
        }
        star += 2;
        printf("\n");
    }



    //============================
    //打印下半部分
    //============================
    space = 1;//重置空格数
    for (int i = 1; i < mid; i++) {
        //每层基数:中值+i
        int val = n - i;
        star = val - space; //下半部分先算星星
        //空格
        for (int j = 0; j < space; j++) {
            printf(" ");
        }
        //*
        for (int j = 0; j < star; j++) {
            printf("*");
        }
        space += 1;
        printf("\n");
    }


    return 0;
}




//法二

    //         空格数       星星数的数学关系  
    //   *     3=4-i        1=2*1-1         1
    //  ***    2=4-i        3=2*2-1         2
    // *****   1=4-i        5=2*3-1         3
    //*******  0=4-i        7=2*4-1         4
//不分成上下两部分重新算则太难找出关系了。
    // *****   1=i-4        5=7-2*1         5
    //  ***    2=i-4        3=7-2*2         6
    //   *     3=i-4        1=7-2*3         7
                            

posted @ 2025-10-29 17:10  HJfjfK  阅读(12)  评论(0)    收藏  举报