题目:从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用函数PrintLine()来输出一行数字,函数原型:void PrintLine(int n)

输入:正整数n(1<=n<=9)

输出:指定数字图形

Exemple

输入:5

输出

        1
      121
    12321
  1234321
123454321
  1234321
    12321
      121
        1

解题思路:由输出我们可以知道一共有(2n-1)行(i 是第几行,j是每行的数),前n行正常,从第n+1行开始,每行的最大数是(2n-i),然后每一行的数输到 i 之后再倒着输出,直到1。

注意:输出的每行数前面还有空格!!!

My DaiMa

#include<stdio.h>
void PrintLine(int n)
{
    int i,j;
    for(i=1;i<2*n;i++)
    {
        if(i<=n)
        {
            for(j=1;j<=n-i;j++)
                printf(" ");  //先处理空格的问题,这是输出空格的操作
            for(j=1;j<=i;j++)
                printf("%d",j);  //这些是第 i 行第 i 个数前面的数,正常输出就行咧
            for(j=i-1;j>0;j--)
                printf("%d",j);  //这些就是第 i +1个数的输出情况,倒着输出这些数就行咧
        }
        else
        {
            for(j=1;j<=i-n;j++)
                printf(" ");  //处理空格的操作
            for(j=1;j<=2*n-i;j++)
                printf("%d",j);  //这些是第n+1行以后的数的操作
            for(j=(2*n-i-1);j>0;j--)
                printf("%d",j);
        }
        printf("\n");  //每输完一行,都要进行换行
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    PrintLine(n);
    return 0;
}