数字金字塔

一、题目

二、题解

思路:规律题

2.1. 解法一

void pyramid(int n) {
    for (int i = 1; i <= n; i++) {//n行
        for (int j = 1; j <= n - i; j++)//n-i行个前置空格
            printf(" ");
        for (int k = 1; k <= 2 * i ; k++) {//空格之后的状态
            if (k % 2 == 1)//数字的位置
                printf("%d", i);
            else
                printf(" ");
        }
        printf("\n");
    }
}

2.2. 解法二

出发点:合并解法一的两个循环

void pyramid(int n) {
    for (int i = 1; i <= n; i++) {//n行
        for (int k = 1; k <= n + i; k++) {
            if (k > n - i && (k - n + i) % 2 == 1)//判断为数字可能的位置&&确定数字的最后位置
                printf("%d", i);
            else
                printf(" ");
        }
        printf("\n");
    }
}

posted @ 2023-11-14 23:24  彭乐祥  阅读(17)  评论(0编辑  收藏  举报