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

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

(0)

相关推荐

  • Python极简代码实现杨辉三角示例代码

    杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列. 把每一行看做一个list,写一个generator,不断输出下一行的list 实现下列输出效果: # [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,

  • 用Python输出一个杨辉三角的例子

    关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的图: 复制代码 代码如下: 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 11 8 28 56 70 56 28 8 1 杨辉三角有以下几个特点: 每一项的值等于他左上角的数和右上角的数的和,如果左上角或者右上角没有数字,就按0计算.第N层项数总比N-1层多1个 计算第N层的杨辉三角,必须知道N-1层的数字,然后将相邻

  • 批处理杨辉三角效果实现代码

    效果图: 复制代码 代码如下: @echo off&color 0esetlocal enabledelayedexpansionmode con: cols=130 lines=130:topcls::set /p in=请输入行数:set in=23&set ab=1&set var=64if "%in%"=="" goto topif %in% geq 35 goto topif %in% leq 0 goto topecho %in%

  • C语言在屏幕上输出杨辉三角

    这就是杨辉三角,也叫贾宪三角.这于我们现在的学习联系最紧密的是2项式乘方展开式的系数规律.如图,在贾宪三角中,第3行的第三个数恰好对应着两数和的平方公式依次下去. 杨辉三角是一个由数字排列成的三角形数表,一般形式如下: ................................................. 杨辉三角的规律是:它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和. 代码如下: #include<stdio.h> #include<stdlib.h

  • PHP写杨辉三角实例代码

    复制代码 代码如下: <?php //杨辉三角 for ($i=6;$i >= 0;$i--) { for ($j=$i;$j <= 6;$j++) { if ($j <= 6-1) { echo "<b>a</b>"; }else { echo "<br />"; } } } ?> PHP打印杨辉三角自定义 复制代码 代码如下: <form method="post" ac

  • JavaScript代码简单实现求杨辉三角给定行的最大值

    复制代码 代码如下: function cal(row) { var result = 1; for(var i = 0; i < row / 2; i++) { return result * = (row - i) / i; } return result; };

  • C++输出上三角/下三角/菱形/杨辉三角形(实现代码)

    1.输出上三角形第一行1个星,第二行3个星,第三行5个星,第四行7个星,第五行9个星.分析:三角形的形状由输出的空白和星组成,通过分析每一行输出几个空格,几个星,就可完成输出三角形的工作. 复制代码 代码如下: #include<iostream>using namespace std;int main(){ int i=0,j=0; for(i=1;i<=5;i++){//控制行数      for(j=1;j<=(5-i);j++){      cout<<&quo

  • java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle {    public static void main(String[] args) {        int triangle[][]=new int[10][];// 创建二维数组        // 遍历二维数组的第一层  

  • C语言实现杨辉三角实例

    本文实例讲述了C语言实现杨辉三角的方法,分享给大家供大家参考. 具体实现方法如下: #include <iostream> using namespace std; void printYangHui(int line) { int **array = new int*[line]; for (int i = 0; i < line; i++) array[i] = new int[line]; for (int i = 0; i < line; i++) { for (int j

  • C语言小程序 杨辉三角示例代码

    复制代码 代码如下: #include <stdio.h>#include <stdlib.h>int main(){ int i,j,k; int line; int *prev, *next; printf("输入要查看杨辉三角的行数(大于2):"); scanf("%d",&line); if(line < 2) {  printf("行数小于2,Goodbye!\n");  exit(1); } fo

随机推荐