首页 > 用户发贴区 > 编程问题提问区 > 杨辉三角 菱形输出(好难哦)
2009
05-13

杨辉三角 菱形输出(好难哦)

请问如何实现杨辉三角菱形的输出呢?例如键盘输入5,得到
        1
      1   1
    1   2   1
  1   3   3   1
1   4   6   4   1
  1   3   3   1
    1   2  1
      1   1
        1


杨辉三角 菱形输出(好难哦)》有 2 条评论

  1. yy_uestc 说:

    一,打印杨辉三角

    二,在对应行加相应空格数 构成上半部分(三角型)

    三,打印下三角

    ===================

    #define n 5                     /*定义全局变量需要打印的行数*/

    main()

    {int i,j,k,a[n][n];

    for(i=0;i<n;i++)

    {a[i][0]=1;a[i][i]=1;}/*杨辉三角各行第一个数和最后一个数均为1*/

    for(i=2;i<n;i++)

    for(j=1;j<i;j++)

    a[i][j]=a[i-1][j-1]+a[i-1][j];/*第三行以后中间各数满足此规律*/

    for(i=0;i<n;i++)

    {for(k=n;k>=i;k–)printf(“  “);/for语句循环控制打印空格次数,1空格2字节*/

    for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);/*打印杨辉三角*/

    printf(“\n”);}

    for(i=n-2;i>=0;i–)                                  /*打印下三角

    {for(k=n;k>=i;k–)printf(”  ”);

    for(j=0;j<=i;j++)printf(“%4d”,a[i][j]);

    printf(“\n”);}                                            */

    printf(“\n”);

    }

     

  2. jiakun260 说:

    #include<stdio.h>
    int port(int n,int m)
    {
     int i,p=0,mplot=1,nplot=1,nmplot=1;
     if(n>=m)
     {
      if(n-m==0)p=1;
      else
      {
       for(i=0;i<n;i++)
       nplot=nplot*(n-i);
       for(i=0;i<(n-m);i++)
       nmplot=nmplot*(n-m-i);
       for(i=0;i<m;i++)
       mplot=mplot*(m-i);
       p=nplot/(nmplot*mplot);
      }
     }
     else
     p=-1;
     return(p);
    }                                /*建立的一个组合公式计算函数*/
    void main()
    {
     int a,i,j,z;
     scanf(“%d”,&a);         /*输入要输出到第几行*/
      for(i=0;i<=a;i++)
      {
       for(z=0;z<=(a-i);z++)
       printf(” “);
       for(j=0;j<=i;j++)
       printf(“%d “,port(i,j));
       printf(“\n”);
      }                                       /*上半部分*/
      for(i=(a-1);i>=0;i–)
      {
       for(z=0;z<=(a-i);z++)
       printf(” “);
       for(j=0;j<=i;j++)
       printf(“%d “,port(i,j));
       printf(“\n”);
      }                                     /*下半部分*/

    我这个程序运行起来比较慢,还请各位多提点意见                        

留下一个回复