目录

1. 杨辉三角认识

2.  杨辉三角基本实现代码

① 打印10行杨辉三角

② 自定义打印0~20行杨辉三角

3. 注意的地方

① 二维数组VS2019中定义

② 空格的打印

备注:此文所有程序均在Visual Stdio 2019 IDE中完成


1. 杨辉三角认识

杨辉三角,是二次项系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。​


2.  杨辉三角基本实现代码

① 打印10行杨辉三角

代码如下:

#include<stdio.h>
#define line_total 10  //打印10行
int main(void)
{int h = 0, l = 0;  //定义行、列int array[line_total][line_total] = {0};  //定义一个二维数组存放每一行数据,//int array[h][l]; VS中错误写法int n = 0; //定义一个int类型变量实现打印空格//杨辉三角取10行for (h = 0; h < line_total; h++)  //行:0 1 2 3 4 5 6 7 8 9{//打印空格for ( n = h ; n < line_total; n++ )  //空格:10 9 8 7 6 5 4 3 2 1{printf("  ");}//取每一行数据for (l = 0; l <= h; l++)  //0 1 2 3 4 5 6 7 8 9共十行(若为“l < h”的话就为1到9,9行){if (l == h || l == 0){array[h][l] = 1;  //外围值取1}else{array[h][l] = array[h - 1][l - 1] + array[h - 1][l];//取每一行的各个数}printf("%-4d", array[h][l]); //打印杨辉三角(%3d,表示每个字符占用3个字符宽度,右边开始放)    }printf("\n");  //打印换行}return 0;
}

思路就是定义行列,定义一个二维数组存放行列,第一个for循环实现打印每一行。嵌套一个for循环打印空格最终形成等腰杨辉三角,再嵌套一个for循环求出该行每一个值,每一行的值求完以后换行,进行新的一轮打印。最终完成打印10行等腰杨辉三角。


② 自定义打印0~20行杨辉三角

利用for内外循环、二维数组打印空格及每行每列。利用while多次打印。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h> //system("pause");头函数
int main(void)
{while (1) //多次打印{int H, L, k, n=20; //定义行、列、空格、总行数int array[21][21] = { 0 }; //定义二维数组,装每行各个数printf("请输入杨辉三角行数1~20:\n");printf("输入0退出!\n");scanf("%d", &n);if (n == 0) //判断输入为“0”退出打印break;while (n > 20 || n < 1) //剔除输入的不符条件的数据{printf("请输入杨辉三角行数1~20:\n");printf("输入0退出!");scanf("%d", &n);}for (H = 1; H <= n; H++) //外循环打印每一行{k = H; //k赋值H,为了不影响Hfor (k; k <= n; k++) //打印空格,形成等腰三角形{printf("   "); //这里有三个空格                }for (L = 1; L <= H; L++) //内循环打印每一列{if (L == H || L == 1)array[H][L] = 1; //外围赋值为1elsearray[H][L] = array[H - 1][L - 1] + array[H - 1][L];printf("%6d", array[H][L]); //打印杨辉三角行和列}printf("\n");}}printf("\n\n");system("pause");return 0;
}

3. 注意的地方

① 二维数组VS2019中定义

首先看一看错误写法:

int array[H][L]; //错误写法,VS中定义数组必须是常量表达式

编译错误提示:

表达式必须含有常量值,即常量表达式。

不能分配大小为0的数组。

“array” 缺少下标,“array” 未知大小。

正确写法应为(部分代码):

#define line_total 10 //打印10行,杨辉三角
int main(void)
{int H, L;        //定义行、列int array[line_total][line_total] = { 0 }; //定义二维数组,赋值为0

解析:

定义二维数组时,可以把二维数组最大的需求加1(或者更多),作为二维数组下标。如,打印20行杨辉三角,定义二维数组可以把下标都写成21。右值可以定义为0,或者其他。比如说:int array[6] = {0,1}; 即第0项,第1项定义为0和1,其他项定义为0。

int H, L, k, n=20;           //定义行、列、空格、总行数
int array[21][21] = { 0 }; //定义二维数组,先赋值为0
printf("请输入杨辉三角行数1~20:\n");
printf("输入0退出!\n");
scanf("%d", &n);


② 空格的打印

for (H = 1; H <= n; H++)  //外循环打印每一行
{k = H;  //k赋值H,为了不影响Hfor (k; k <= n; k++)  //打印每一行空格,形成等腰三角形{printf("   ");  //这里有三个空格}
}

空格打印虽然比较随意,但是起码得看起来规整美观         。

① 看起来得美观。

② “%6d”每个字符占6个符号位,从左写入。

③ 上面第三条语句 printf("   ");,里面空格符号数量与%6d有关(6➗2=3,两倍的关系)。


C语言练习---杨辉三角相关推荐

  1. 利用C语言打印杨辉三角

    利用C语言打印杨辉三角 此次打印的杨辉三角格式如下: 我们此次以15行的杨辉三角为例. 首先来说一下基本的思路 通过观察可知,如果把杨辉三角看成是一个大的三角形,其第一列和对角线的值均为1. 从第3行 ...

  2. c语言二维函数杨辉三角,C语言编写杨辉三角(二维数组方法)

    C语言实现杨辉三角(二维数组) 杨辉三角是什么 杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的<详解九章算法>一书中出现.在欧洲,帕斯卡(1623--- ...

  3. C语言输出杨辉三角前n行(低时间复杂度)

    C语言实现杨辉三角前n行(低时间复杂度) 杨辉三角定义 杨辉三角,是二项式系数在三角形中的一种几何排列,初中的时候我们学过它的每一个数都是上一行两个数之和,如图 已知杨辉三角行数 如果我们已知要求的杨 ...

  4. 杨辉三角c语言编程报告,C语言打印杨辉三角示例汇总

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

  5. 用linux编译打印杨辉三角形,C语言打印杨辉三角代码及解析

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

  6. C语言编写杨辉三角(二维数组方法)

    C语言实现杨辉三角(二维数组) 杨辉三角是什么 杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的<详解九章算法>一书中出现.在欧洲,帕斯卡(1623--- ...

  7. c语言编程杨辉三角前八行思路,C语言----(杨辉三角)

    用C语言编程打印出杨辉三角的前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: ...

  8. C语言编程————杨辉三角

    杨辉三角是什么? 杨辉三角,是二项式系数在三角形中的一种几何排列.在欧洲,这个表叫做帕斯卡三角形.帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年. ...

  9. 杨辉三角的c语言代码,杨辉三角C语言代码

    杨辉三角C语言代码 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一 ...

  10. 数据结构c语言程序杨辉三角,杨辉三角 --- C语言程序

    杨辉三角 ---  C语言程序 1.前言 最近在逛博客的时候发现一个特别有意思的三角形  然后便编写了下来.   它呢就是杨辉三角,也作为我的首篇博客吧 2.旅程开始 此处为网上所找到的公式以及各种概 ...

最新文章

  1. Drainage Ditches
  2. 自定义下拉列表(使用原始的事件监听机制),在搜索框中使用
  3. 解决MySQL8.0报错:Unknown system variable 'validate_password_policy'
  4. spring源码学习一
  5. leetcode算法题01
  6. .NET跨平台之旅:将示例站点从ASP.NET 5 Beta7升级至RC1
  7. mysql page_一文理解MySQL中的page页
  8. Boost:递归容器的测试程序
  9. 详细记录如何在跨域请求中携带cookie
  10. 装箱问题(信息学奥赛一本通-T1295)
  11. 使用git在本地电脑与远程GitHub/gitlub库中clone别人的github上的远程仓库代码,找资源
  12. 设计师所需图标素材网站,不用到处找了,都在这!
  13. ztree隐藏指定节点后面的(重命名和删除)图标
  14. 基于ROS的运动识别
  15. WidsMob Denoise如何使用?WidsMob Denoise图片降噪教程
  16. 域名更换是什么意思?
  17. UWB基本原理分析2
  18. 酷炫的交互动画和视觉效果
  19. 【管理学视频课程】关键链的本质--…
  20. arcmap添加字段的类型_ArcGIS 字段数据类型

热门文章

  1. #2016京东实习生笔试之生日礼物
  2. asp.net中runat=server的含义
  3. 如何使用Yii2编程:Google身份验证
  4. 微信公众平台账号迁移公证书如何办理?GDP30强城市收据全新出炉
  5. linux 系统安装aria2以及配置web端
  6. Python基础 [...,]三点切片
  7. 公司基础网络架构及实现
  8. windows,打印机无打印任务,仍不断打印
  9. 开放API接口签名验证,让你的接口从此不再裸奔
  10. 算术右移 java_Java 中 算术右移和逻辑右移有什么区别?