【C语言】打印杨辉三角

简介: 杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。

杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。

“杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

8ca109fe845eab75c9c519dbf2b58f53_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png


就是这个看上去平平无奇的数字三角形,却有一些非常奇妙甚至是神秘的特性。


杨辉三角的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和,以此类推。

ae38568533fb76b74f2100f5bd961b0b_952106173c4046bc8082b580410195c2.gif


那我们该怎么打印杨辉三角呢?


但我们把每一行都对齐(如下),就像一个二维数组打印一样。


所以我们可以用二维数组存储杨辉三角


1
1 1
1 2 1
1 3 3 1
……

代码实现如下:

#include<stdio.h>
int main()
{
  int n = 0;
  int i = 0;
  printf("请输入打印的行:");
  scanf("%d",&n);
  int** arr;
  arr = (int**)malloc(n * sizeof(int*));
  for (i = 0; i < n; i++)
  {
  arr[i] = (int*)malloc(n * sizeof(int));
  }
  for (i = 0; i < n; i++)
  {
  int j = 0;
  for (j = 0; j < n - i; j++)
  {
    printf(" ");
  }
  for ( j = 0; j <= i; j++)
  {
    if (j == 0 || j == i)
    {
    arr[i][j] = 1;
    }
    else if(i>1 && j>0) {
    arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j];
    }
    printf("%d ", arr[i][j]);
  }
  printf("\n");
  }
  return 0;
}
相关文章
|
7月前
|
算法 C语言
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
55 0
|
7月前
|
存储 C语言
说出来你可能不信, 杨辉三角形用C语言实现其实很简单!
说出来你可能不信, 杨辉三角形用C语言实现其实很简单!
|
7月前
|
C语言
【C 语言经典100例】C 练习实例61 - 杨辉三角形
【C 语言经典100例】C 练习实例61 - 杨辉三角形
42 0
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
86 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
C语言
【C语言】杨辉三角和练习
【C语言】杨辉三角和练习
76 0
【C语言】杨辉三角和练习
|
C语言
【C语言】杨辉三角
【C语言】杨辉三角
100 0
C语言实现杨辉三角
C语言实现杨辉三角
|
C语言
C语言经典问题—猜名次、猜凶手和杨辉三角
C语言经典问题—猜名次、猜凶手和杨辉三角
71 0
C语言_杨辉三角
杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。
C语言_杨辉三角