如何用c语言编写类数字金字塔

img


基础版的金字塔勉强能接受,但这个plus版的不会解了,有没有老司机帮解下思路

找一个修改修改就行了呀

img

  
 
#include <stdio.h>
 
  void PrintNumers(int line)
{
    int i, j, k;
    int space = 16;
    //  上三角行循环,由于line与行数相关,故可直接使用line作为范围
    for(i = 0; i < line; i ++)
    {
        //  输出空格,为了直观,故改空格为星形符号*
        for(j = space; j > 0; j --)
            printf(" ");
        //  输出前一部分1,2,3……
           for(k = 0; k < i + 1; k ++)
            printf("%d",k + 1);
        //  在当前基础上,重利用k的值,输出后一部分2,1,没0
        for(k = k - 1;k > 0; k --)
            printf("%d", k);
        //  每输出完一行内容,就减去一个空位,也就是星形符号,以便下一行可以新增一个数字
        space --;
        //  每输出完一行就换行
        printf("\n");
    }
    //  在当前基础上,重利用space的值,因为上一步最后space--了,所以这次利用需要对space加两次,若加一次则和上三角最后的行等长
    space += 2;
    //  下三角行循环
    for(int i = line - 1; i > 0; i --)
    {
        //  输出空格,为了直观,故改空格为星形符号*
        for(j = space; j > 0; j --)
            printf(" ");
        //  输出前一部分1,2,3……
        for(k = 0; k < i; k ++)
            printf("%d",k + 1);
        //  输出后一部分2,1,没0
        for(k = k - 1;k > 0; k --)
            printf("%d", k);
        //  每输出完一行内容,就增加一个空位,也就是星形符号,以便下一行可以减少一个数字
        space ++;
        //  每输出完一行就换行
        printf("\n");
    }
}
main(){
    int a;
    scanf("%d",&a);
    PrintNumers(a);
}

 

#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[]) {

    printf("Please enter a number as integer: ");
    int n;
    if ((scanf("%d", &n) != 1) || (n<0 || n>9)) {
        printf("Error in input!!!\n");
        exit(EXIT_FAILURE);
    }

    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < n - i; j++)
            printf("  ");
        for (int j = 1; j <= i; j++)
            printf("%2d", j);
        for (int j = i - 1; j >= 1; j--)
            printf("%2d", j);

        printf("\n");
    }

    for (int i = 1; i < n; i++) {
        for (int j = 0; j < i; j++)
            printf("  ");
        for (int j = 1; j <= n - i; j++)
            printf("%2d", j);
        for (int j = n - i - 1; j >= 1; j--)
            printf("%2d", j);
        
        printf("\n");
    }

    return 0;
}

img