杨辉三角是我们从初中就知道的,现在,让我们用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行杨辉三角如下:11     11     2     11     3     3     11     4     6     4     11     5    10    10     5     11     6    15    20    15     6     11     7    21    35    35    21     7     11     8    28    56    70    56    28     8     11     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行杨辉三角如下:11   11   2   11   3   3   11   4   6   4   11   5  10  10   5   11   6  15  20  15   6   11   7  21  35  35  21   7   11   8  28  56  70  56  28   8   11   9  36  84 126 126  84  36   9   1

C语言杨辉三角(两种方法)相关推荐

  1. python杨辉三角两种写法详解

    一般写杨辉三角都是用二维数组,通过二维数组的下标,可以非常容易的计算出下一行结果. [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 1 ...

  2. 杨辉三角c语言用矩阵,C语言中杨氏矩阵与杨辉三角的实现方法

    一.杨氏矩阵 1.杨氏矩阵的概念 在数学中,杨表(英语:young tableau),又称杨氏矩阵.是对组合表示理论和舒伯特演算很有用的工具.它提供了一种方便的方式来描述对称和一般线性群的群表示,并研 ...

  3. C语言判断素数的两种方法

    C语言判断素数的两种方法 素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数, ...

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

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

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

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

  6. C语言-杨辉三角的三种解法-简单易懂篇

    杨辉三角 1.创建二维数组 2.递归方法 3.利用公式求每一个杨辉三角的元素 这里我们先实现第二张图的这种杨辉三角,在第二张图的基础上加上对数字前面空格的控制就好了,这个不难实现,重点是先把杨辉三角成 ...

  7. C语言打印杨辉三角的多种方法

    3.在屏幕上打印杨辉三角. 1 1 1 1 2 1 1 3 3 1 解法一: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> in ...

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

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

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

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

最新文章

  1. js改变img标签的src属性在IE下没反应的解决方法
  2. 命令 —— awk内置变量(NF,NR,FS,FILENAME)
  3. MATLAB常用命令、函数与运算
  4. DataBinding 学习系列(2)详解DataBinding在xml中的使用
  5. 【C语言】字符数组,碎碎念
  6. dwz框架在网站群项目中的应用(2)—html拓展之页面形式
  7. Zookeeper、Hadoop、Sqoop、Mahout、HBase整合安装
  8. Android Studio builde.gradle 配置说明
  9. 你想要的宏基因组-微生物组知识全在这(2020.9)
  10. 将java或javaweb项目打包为jar包或war包
  11. 【Python05】Python转义字符
  12. 【为什么我在namesilo买的域名说我没有备案 】求大佬解答
  13. 魔方二维动态还原过程MATLAB仿真/魔方二维平面展开
  14. 简单实现微信小程序音乐音频播放的功能
  15. 长沙公积金和商贷组合贷款
  16. 程序设计思想与方法 笔记
  17. K-means聚类、KNN算法原理
  18. OPENSSL EVP_AES部分翻译
  19. HoloView 在 jyputer lab/notebook 不显示总结
  20. c# 刻度:毫米 英寸 像素转换

热门文章

  1. Windows系统资源监控
  2. 大清朝的微积分教材,堪称天书!
  3. 无穷小微积分教材的结束语
  4. unity2D学习(2)Tilemap绘制地图
  5. C# 入门级教程网站
  6. 首届中国网络文学论坛
  7. java异常 — — 异常的处理
  8. 方正文祥e630加保卡后找不到分区
  9. 天钰FP6378AS5CTR芯片供应,输出电压纹波低,输出电流敢达3A
  10. Android10(华为Mate30)获取图片路径失败,拍照或从相册选择图片后无法显示