数字金字塔

发布时间 2023-11-14 23:28:42作者: 彭乐祥

一、题目

二、题解

2.1. 思路:规律题

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.1. 解法二

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

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