目录

一、什么是杨辉三角?

二、实现方法

1、直角三角形版

1.1、法一  观察法

1.2、法二  部分棋盘打印法

2、等腰三角形版


一、什么是杨辉三角?

特征:图形两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。

如图:

二、实现方法

1、直角三角形版

注意当把它的全部元素左对齐,就可以看成近似杨辉三角的样子

如图:

1.1、法一  观察法

观察图片,找i==j行和第一列j==0时直接赋值为1

其他数等于肩上两数之和

//法一  观察初始化
int main()
{int i = 0;int j = 0;int n = 0;scanf("%d", &n);int a[10][10] = { 0 };//存放元素for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (j == 0 || i == j)  //第一列和i==j时直接赋值为1{a[i][j] = 1; }if (i >= 2 && j >= 1){a[i][j] = a[i - 1][j - 1] + a[i - 1][j];}}}//打印for (i = 0; i < n; i++){for (j = 0; j <=i; j++){printf("%d ", a[i][j]);}printf("\n");}return 0;
}

1.2、法二  部分棋盘打印法

利用扫雷打印棋盘的方法,数组多创建行列多创建两行两列的方式,防止数组越界(也可以行+1,列+1,因为最后一行的下一行,列最后一行下一行(和正规杨辉三角不同)不会用到,没有越界问题)

//法二 采用扫雷初始化的方法,把数组空间行和列各创建大一行,防止越界
int main()
{int a[10][10] = { 0 };int i = 0;int j = 0;int n = 0;a[0][0] = 1;//输入数字scanf("%d", &n);for (i = 1; i <= n; i++)  //实际使用的数组大小是a[n+1][n+1],多用到i=0行j=0列,但不打印出来{for (j = 1; j <= i; j++){a[i][j] = a[i - 1][j - 1] + a[i - 1][j];}}//打印for (i = 1; i <= n; i++){for (j = 1; j <= i; j++){printf("%d  ", a[i][j]);}printf("\n");}return 0;
}

成果展示:

2、等腰三角形版

1、利用扫雷打印棋盘的方法,数组多创建两行两列(或者行+1,列+2,因为最后一行的下一行不会用到,而列的要用到)

2、数组空间可以自己改大再去看更大的杨辉三角

3、打印出来的空格处在数组中其实是已经初始化为0,打印时当满足数组元素==0,就打印空格

代码如下:

//法三   正规杨辉三角   (防止越界行多创建一行,列多创建两列)
//保存数据
void set(int a[10+1][2 * 10 + 1], int n)   //[][]和a本身空间要一致,不然行列数会发生变化
{int i = 0;int j = 0;a[1][n] = 1;for (i = 1; i <=n ; i++){for (j = 1; j <= 2 * n - 1; j++){if (i == 1 && j == n)continue;elsea[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1];}}}
//初始化
void Init(int a[10+1][2 * 10 + 1], int n)
{int i = 0;int j = 0;for (i = 0; i < n+1; i++){for (j = 0; j < 2 * n + 1; j++){a[i][j] = 0;}}
}
//打印
void print(int a[10+1][2 * 10 + 1], int n)
{int i = 0;int j = 0;for (i = 1; i <= n; i++){for (j = 1; j <= 2 * n - 1; j++)   //最右边一列不打印{if (a[i][j] == 0){printf("   ");  //3个空格,格式好看}else{printf("%3d", a[i][j]);  //占3个字符,格式好看}}printf("\n");}
}
int main()
{int n = 0;              //a[i][j] = a[i - 1][j - 1] + a[i - 1][j + 1] - 2 * '0';scanf("%d", &n);   //char的数组算,当字符大于'9'后会出问题int  a[10+1][2*10+1] = { 0 };  //画图后发现:行=n+1,因为和最后一行的下一行无关Init(a, n);                                        // 列=2*n+1  ,多创建两行列set(a, n);print(a, n);return 0;
}

成果展示:

【C语言】-杨辉三角相关推荐

  1. C语言杨辉三角(两种方法)

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是 1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一 ...

  2. C语言——杨辉三角(最佳算法)

    目录 方法一:一维数组,节约内存 方法二:(最佳算法⭐)递归函数法,程序最简,占用内存最少 运行结果: C语言输出杨辉三角形 等腰三角形 前言 杨辉三角形的特点: 第一列和对角线上的元素都为1: 除第 ...

  3. c语言杨辉三角求排列组合,杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析...

    说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度. 本文假定读者具备二项式定理.排列组合.求和等方面的数学知识. 一  基本概念 杨辉三角,又称贾宪三角.帕斯卡三角,是二项式系数在三 ...

  4. C语言杨辉三角代码详解(超级详细,真的不进来看看吗?)

    杨辉三角:是二项式系数在三角形中的一种几何排列.它的两条斜边都是1,中间数字等于它肩上数字之和. 就像这样: 那么,如何用C语言写出杨辉三角呢? 思路 1.定义一个二维数组,赋初值为1,这里以四行四列 ...

  5. c语言杨辉三角解释,C语言杨辉三角是什么

    在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的'关键之一.在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n为行数减1. ...

  6. c语言杨辉三角形7行7liu,7. C语言杨辉三角(两种方法)

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是 1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一 ...

  7. C语言杨辉三角(用二维数组)

    杨辉三角概述: 每行端点与结尾的数为1. 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 前n行共[(1+n)n]/2 个数. 第n行的m个数可表示为 C(n- ...

  8. c语言 杨辉三角(详解)

    前言:杨辉三角,是二项式系数在三角形中的一种几何排列,出自中国南宋数学家杨辉1261年所著的<详解九章算法>,今天让我们用c语言来让杨辉三角呈现在我们面前! 目录 一.杨辉三角 二.问题分 ...

  9. C语言杨辉三角(不用数组)

    程序分析: 前面已经介绍了用二维数组.一维数组写杨辉三角,这里再一种不用数组的方法,这种方法是三种当中最难的一个. 在写程序之前我们要发现杨辉三角的每个位置上的数字的特征,即: 第n行:第一个值是1, ...

  10. c语言杨辉三角的实现

    杨辉三角的规律:两边斜线数字都是1,其他数都是它肩上两数之和. 下面给出示例: #include<stdio.h> #include <string.h> #define k ...

最新文章

  1. python代码统计字符串中大写字符、小写字符、特殊字符以及数值字符出现的次数
  2. 百度前端技术学院2017学习总结
  3. mysql主从备份失败--记录现象
  4. 魅族8.0系统手机最完美激活xposed框架的步骤
  5. 团队作业3——需求改进系统设计
  6. 刷网络课_网络营销实践心得—刘荟萌
  7. .NET生成常用16、32位MD5加密的两种方法
  8. Redis事务和秒杀业务设计
  9. Cloudstack
  10. 仅需1分钟,让你的电脑变无线路由器
  11. 计算机机房需求调查表,机房建设需求调查表机房建设需求调查表.doc
  12. 利用计算机指令清理垃圾,计算机Dos处理,编写一键清理系统垃圾的bat代码,小白都可以学...
  13. windows用VS2019下编译log4cxx日志库
  14. 如何使用Hyper-V Manager和Powershell合并Hyper-V检查点
  15. Aborted (core dumped)
  16. python连接oracle12c
  17. vue自定义弹窗dialog,vue 点击遮罩层功能区以外的地方关闭遮罩层
  18. 什么是memcache,常见的memcache方法
  19. gitee教程(超全,超详细,超长)
  20. 论文的黑斜体,白斜体是什么意思?

热门文章

  1. 基于Java的机票在线销售系统设计与实现
  2. 人大金仓Kingbase数据库使用dblink进行跨库操作示例
  3. 人证比对+图片相似度+MTCNN+FACENET+CNN
  4. 适马宣布新款全幅Foveon将采用X3 1:1:1技术
  5. 分区 Partitions
  6. python实战一个完整的项目-年终课程盘点|16 个 Python 综合实战项目合集
  7. 利用google or-tools 求解数独难题
  8. 关于李笑来,关于区块链
  9. Python3 爬取电影网下载链接
  10. node.js、npm是什么?服务器脚本语言有哪些?