杨辉三角——C语言实现

杨辉三角:

在屏幕上打印杨辉三角。

1

1 1

1 2 1

1 3 3 1

……

根据上述例子可知:

1.每一行的第一个和第二个数为1;

2.其余的数为正上方和左边数字之和。

方法一:利用二维数组实现

解题思路:

根据杨辉三角的规律,我们可以定义一个二维数组来实现杨辉三角的打印,其中数字的规律为:

data[i][j] = data[i - 1][j] + data[i - 1][j - 1],所以我们按照这个方法将数据填入二维数组之后打印即可。

代码如下:

#include <stdio.h>int main()
{int n;int data[30][30] = {1};//将第一行直接填好,为1printf("请输入要打印的行数:>");scanf("%d", &n);for (int i = 1; i < n; i++)//从第二行开始填{data[i][0] = 1;//将每一行第一列先初始化为1,防止越界for (int j = 1; j < i + 1; j++){data[i][j] = data[i - 1][j] + data[i - 1][j - 1];}}for (int i = 0; i < n; i++)//打印二维数组{for (int j = 0; j < i + 1; j++){printf("%d ", data[i][j]);}printf("\n");}return 0;
}

运行结果:

 方法二(对方法一的改进):

由于我在填第n行的杨辉三角时,只跟第n-1行的杨辉三角产生联系,不会跟之前的有联系,所以没必要保存每一行的杨辉三角,利用一维数组,填一行打一行即可,这样能让空间复杂度从O(n^2)降低到O(n)。但是在填数据的时候不能对之前的数据覆盖,所以需要从后向前填。而填杨辉三角顺序对结果是没有影响的,所以可以实现。

代码如下:

#include <stdio.h>int main()
{int n;int data[30] = { 1 };printf("请输入要打印的行数:>");scanf("%d", &n);printf("1\n");//直接打印第一行for (int i = 1; i < n; i++)//从第二行开始{for (int j = i; j > 0; j--)//从后往前填,避免上一行的数据在使用前就被覆盖{data[j] += data[j - 1];}for (int j = 0; j <= i; j++){printf("%d ", data[j]);}printf("\n");}return 0;
}

运行结果: 

C语言编程题——杨辉三角(两种方法实现)相关推荐

  1. 杨辉三角c语言编程视频,杨辉三角C语言编程

    1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 杨辉三角在程序练习当中是比较常见的,根据上面的给出的数列可以看出一些规律来,每行的两边都是1,从第2列开始,每个数是上一行相邻的数之和,根据 ...

  2. 某校2020专硕编程题-杨辉三角

    题目 输入正整数n,输出n行杨辉三角 如:n=4 1 1 1 1 2 1 1 3 3 1 Java实现 public static void test05(){Scanner sc = new Sca ...

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

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

  4. 已知华氏温度f c语言,编程题:已知两种温度的换算公式C=(5/9)(F-32),试编写一个程序输入华氏度F,输出摄氏度。...

    使用python的写法为: val=input("请输入带有温度表示符号的温度值(例如:32c)") if val[-1] in ["C","c&qu ...

  5. 嵌入式 Linux 开发工具篇问题整理//C语言测试(杨辉三角、递归调用实现阶乘、计算器、统计字符串出现次数)//2018.07.12.//

    嵌入式 Linux 开发工具篇问题整理 1. 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别)             是否有无操作系统:     2. 移植操作系统的好处有哪些 ...

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

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

  7. linux中复制字符串出错,C语言实现字符串的复制的两种方法

    本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...

  8. 杨辉三角c语言程序for循环,如何用C语言循环输出杨辉三角?

    #include #define N 14 void main() { int i, j, k, n=0, a[N][N];  /*定义二维数组a[14][14]*/ while(n<=0||n ...

  9. 【已解决】蓝桥杯 2017年C组第五题 杨辉三角(分析与总结)

    励志用少的代码做高效表达 题目描述: 杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要. 第0行: 1 第1行: 1 1 第2行: 1 2 1 第3行: 1 3 3 1 第4行: 1 4 6 ...

最新文章

  1. Python3 字符串
  2. 【转】vim中将tab自动转换成空格
  3. 类的加载过程三:Initialization
  4. linux 基础学,linux基础学习【1】
  5. WPF里面的常用笔刷
  6. django contrib 包简介
  7. 求出该数组中特定元素的和,特定元素是指个位和十位不包含7的偶数。
  8. ruby array_Ruby中带有示例的Array.sample()方法
  9. 【Java】探究Java数组的本质
  10. [转] VS2010中VC9.0Runtime与VC10.0Runtime在win7上装不上提示error code 1603
  11. JavaScript重载解读
  12. c++利用初始化列表在类内部和类外部定义构造函数的区别
  13. 现在为什么没有人再提“以厂为家”这样的词语啦?
  14. STL源码剖析-map
  15. python小飞机程序
  16. C语言科学计数法介绍和示例
  17. 骑士cms火车头发布模块-骑士cms火车头采集规则免费
  18. 宜信CEO唐宁对话英伟达机器学习总监Animashree:AI如何影响人类
  19. Anaconda安装踩雷+解决Anaconda Navigator打不开
  20. 百度地图 行政区切换显示

热门文章

  1. Mybatis -study
  2. php判断图片是否可用,PHP判断图片是否损坏
  3. nodejs框架 mysql数据库_nodejs操作mysql数据库
  4. 生活记录-- 林微因《分手信》
  5. 日常记录(关于sessionStorage.setItem)
  6. 解决win10的wifi打不开或无法搜索到周围wifi的问题
  7. 涂雅七月:IT娱乐圈
  8. 精雕细琢!阿里打磨出来的 MyBatis+设计模式 架构指南
  9. 杭电1201--18岁生日
  10. iOS模仿微信滑块动态设置字体大小的功能