【超星】程序设计基础 数字金字塔

题目名称:数字金字塔

题目描述:编程序,制打印如下所示的n行数字金字塔(n由用户从键盘输入)。

【超星】程序设计基础 数字金字塔_第1张图片

输入:一个正整数 n (≤10)

输出:如上所示的类似数字金字塔。输出由数字 0~9构成的n行数字三角矩阵:其中第一行有1个数,第二行有3个数,依次类推,每个数字占用2位英文字符宽度,宽度不足2位的的在数字左侧补空格;整个数字三角阵,除必要的空格、数字、回车换行符,无多余字符。

样例1:

输入:1
输出:

图1行.jpg

(注:1的前面有一个空格)

样例2:

输入:3
输出:

图3行.jpg

(注:末行的第一个数字1前面有一个空格)

#include

int main(void)

{

    int n,i,j,k=1,u,v,x=1;        //x为目前输出的行数

    scanf("%d",&n);

        v=20;i=n;           //包括中间一列,左边有20格,v=20

    if(n<=10){             //一个数字两个格,n<=10

    while(i>=1&&x!=10){

            j=1;

        while(j<=2*i-2){

            printf(" ");                            //打印空格,找出与 i 的简单关系

            j++;}

        k=1;

        while(k<=x){                           

            printf(" %d",k);                         //在x行输出x个递增的数

            k++;}

        v=2;u=x;

        while(v<=x){

            printf(" %d",u-1);                 //再输出x-1个递减的数

            u--;

            v=v+1;

            }printf("\n");           //输出完换行

            i--;x++;}}                  //i初值为n,到i=0结束,循环n次           x行数自增

    if(n==10)

    printf(" 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1");            //最后一行比较特殊,直接手打。。。

    return 0;

}

你可能感兴趣的:(c语言)