当前位置: 首页 > 编程笔记 >

C语言打印杨辉三角示例汇总

齐英朗
2023-03-14
本文向大家介绍C语言打印杨辉三角示例汇总,包括了C语言打印杨辉三角示例汇总的使用技巧和注意事项,需要的朋友参考一下

杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来。

在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n为行数减1。也就是说任何一个数等于这个是高中的组合数。n代表行数减1,不代表列数减1。如:第五行的第三个数就为=6。

现在我们按第一种思路来写:先定义一个二维数组:a[N][N],略大于要打印的行数。再令两边的数为1,即当每行的第一个数和最后一个数为1。a[i][0]=a[i][i-1]=1,n为行数。除两边的数外,任何一个数为上两顶数之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]。最后输出杨辉三角。代码如下:

#include <stdio.h>
#define N 14
void main()
{
  int i, j, k, n=0, a[N][N]; /*定义二维数组a[14][14]*/
  while(n<=0||n>=13){ /*控制打印的行数不要太大,过大会造成显示不规范*/
    printf("请输入要打印的行数:");
    scanf("%d",&n);
  }
  printf("%d行杨辉三角如下:\n",n);
  for(i=1;i<=n;i++)
    a[i][1] = a[i][i] = 1; /*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/
  for(i=3;i<=n;i++)
    for(j=2;j<=i-1;j++)
      a[i][j]=a[i-1][j-1]+a[i-1][j]; /*除两边的数外都等于上两顶数之和*/ 
  for(i=1;i<=n;i++){
    for(k=1;k<=n-i;k++)
      printf("  "); /*这一行主要是在输出数之前打上空格占位,让输出的数更美观*/
    for(j=1;j<=i;j++) /*j<=i的原因是不输出其它的数,只输出我们想要的数*/
      printf("%6d",a[i][j]);
    
    printf("\n"); /*当一行输出完以后换行继续下一行的输出*/
  }
  printf("\n");
}

运行结果:
请输入要打印的行数:10
10行杨辉三角如下:

                1
               1   1
             1   2   1
            1   3   3   1
          1   4   6   4   1
         1   5  10  10   5   1
       1   6  15  20  15   6   1
      1   7  21  35  35  21   7   1
    1   8  28  56  70  56  28   8   1
   1   9  36  84  126  126  84  36   9   1

上面的这一种方法我们用到了二维数组,下面的这一方法我们将用到自定义函数。

在高中我们知道,杨辉三角中的任何一个数都等于一个组合数,现在我们用这一公式来做。首先,此方法代码如下:

#include <stdio.h>
/* 
 * 定义阶乘,在这里可能会想。为什么要用float,当我试第一次的时候,
 * 如果用int的话,那么在打印行数多了以后就会出错。
 * 这是因为阶乘的数比较大,如果用int就不够用了。下同
 */
float J(int i){
  int j;
  float k=1;
  for(j=1;j<=i;j++)
    k=k*j;
  return(k);
}
float C(int i,int j){ /*定义组合数*/
  float k;
  k=J(j)/(J(i)*J(j-i));
  return(k);
}
void main(){
  int i=0,j,k,n; /*打印杨辉三角*/ 
  while(i<=0||i>16){
    printf("请输入要打印的行数:");
    scanf("%d",&i);
  }
  printf("%d行杨辉三角如下:\n",i);
  for(j=0;j<i;j++){
    for(k=1;k<=(i-j);k++)
      printf(" ");
    for(n=0;n<=j;n++)
      printf("%4.0f",C(n,j));
    printf("\n");
  }
  printf("\n\n");
}

运行结果:
请输入要打印的行数:10
10行杨辉三角如下:

            1
           1  1
          1  2  1
         1  3  3  1
        1  4  6  4  1
       1  5 10 10  5  1
      1  6 15 20 15  6  1
     1  7 21 35 35 21  7  1
    1  8 28 56 70 56 28  8  1
   1  9 36 84 126 126 84 36  9  1

这个方法主要就是要知道组合数的表示。还有如果自定义函数。但是这种方法产生的数据比较大,不建议用这种方法。

 类似资料:
  • 本文向大家介绍汇编语言实现打印杨辉三角,包括了汇编语言实现打印杨辉三角的使用技巧和注意事项,需要的朋友参考一下 计算杨辉三角形的前n(n<=10)行,并显示在屏幕上。要求计算及显示 用子程序形式实现。其显示格式为: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 杨辉三角 杨辉,字谦光,汉族,钱塘(今浙江省杭州)人,南宋杰出的数学家。 他曾担任过南宋地方行政官员,为政清廉,足迹遍及苏杭一带。他在总结民间乘除捷算法、“垛积术”、纵横图(幻方)以及数学教育方面,均做出了重大的贡献。他是世界上第一个排出丰富的纵横图和讨论其构成规律的数学家。还曾论证过弧矢公式,时人称为“辉术”。与秦九韶、李冶、朱世杰并称“宋元数学四大家”。主要著有数学著作5种21卷,即《详解九章

  • 本文向大家介绍打印出杨辉三角形(要求打印出10行如下图)。相关面试题,主要包含被问及打印出杨辉三角形(要求打印出10行如下图)。时的应答技巧和注意事项,需要的朋友参考一下 【参考答案】  

  • 本文向大家介绍使用python打印十行杨辉三角过程详解,包括了使用python打印十行杨辉三角过程详解的使用技巧和注意事项,需要的朋友参考一下 杨辉三角,是二项式系数在三角形中的一种几何排列 每个数等于它上方两数之和。 每行数字左右对称,由1开始逐渐变大。 第n行的数字有n项。 第n行数字和为2n-1。 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

  • 本节利用过 Java 语言中的流程控制语句,如条件语句、循环语句和跳转语句等知识输出一个指定行数的杨辉三角形。 杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和。打印杨辉三角形时需要使用到 for 循环语句。 打印杨辉三角形的实现思路是:每一行前面都是空格,而每行空格的个数需要根据总行数来确定,这个可以通过找规律归纳出来

  • 本文向大家介绍python实现杨辉三角思路,包括了python实现杨辉三角思路的使用技巧和注意事项,需要的朋友参考一下 程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] ...... 方法:迭代,生成器 实现逻辑: 1.由于yield为生成器中断输出,所以有了第一个次输出为[1] 2.继续while下面的yield后的循环,此时list长度为1,将其代入L中的le

  • 本文向大家介绍使用python生成杨辉三角形的示例代码,包括了使用python生成杨辉三角形的示例代码的使用技巧和注意事项,需要的朋友参考一下 杨辉三角杨辉 定义如下: 把每一行看做一个list,试写一个generator,不断输出下一行的list: ps:如何实现心 实现的效果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍用Python输出一个杨辉三角的例子,包括了用Python输出一个杨辉三角的例子的使用技巧和注意事项,需要的朋友参考一下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的图: 杨辉三角有以下几个特点: 每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按0计算。 第N层项数总比N-1层多1个 计算第N层的杨辉三角,必须知道N-1层的数字,