[C语言][典例详解]打印杨辉三角(找规律简单实现)

news/2024/7/24 14:38:58/

目录

杨辉三角的相关知识

杨辉三角图:

 

杨辉三角的规律

在编程中实现

第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状;

​编辑

1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:)

2.打印中间的数据(代码实现+分析+运行效果)

 第二步:加上空格构成三角形(代码实现+分析+运行效果)

 总代码:


杨辉三角的相关知识

杨辉三角图:

 

 


杨辉三角的规律

1.每个数等于它上方两数之和。(如下图1)

 2.每行数字左右对称,由1开始逐渐变大。(如图)

 3.第n行的数字有n项。(由上图容易看出)

4.(a+b)^n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。(如图)

 

 所以我们也可以用二项式来写出,但下面所讲的是用上面行的数字加来得下面所要的数字


在编程中实现

杨辉三角在编程实现中较为容易。最常见的算法便是用上一行递推计算;也有运用和组合的对应关系而使用阶乘计算的,然而后者速度较慢且阶乘容易溢出

第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状;

如:

1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:

代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}}}//打印看看效果for (i = 0; i < 10; i++){int j = 0;for (j = 0; j < i + 1; j++){printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

分析:

 

运行效果:

 


2.打印中间的数据(代码实现+分析+运行效果

利用上一行的前面一列的数加上一行本列数得到这个数

如:我们要得到第三行的第二个数2   即arr[3][1];即arr[3-1][1-1]+arr[3-1][1]=arr[3][1]=2

 代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}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;
}

代码分析:

 运行结果:

 第二步:加上空格构成三角形(代码实现+分析+运行效果

代码实现:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){int n = i;arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}if (i > 1 && j > 0){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}while (10 - (n + 1)){printf(" ");n++;}printf("%d ",arr[i][j]);}printf("\n");}return 0;
}

代码分析:

运行结果:


 总代码:

int main()
{int arr[10][10] = { 0 };int i = 0;for (i=0;i<10;i++){int n = i;arr[i][0] = 1;int j = 0;for (j = 0; j < i + 1; j++){if (i == j){arr[i][j] = 1;}if (i > 1 && j > 0){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}while (10 - (n + 1)){printf(" ");n++;}printf("%d ",arr[i][j]);}printf("\n");}return 0;
}


http://www.ppmy.cn/news/102739.html

相关文章

机器学习常识 2: 数据类型

摘要: 本贴讨论常见的数据类型. 1. 基本数据元素 (data item) 的类型 基本元素的类型包括: 布尔型、枚举型、实型等。 布尔型有两种取值, 如: Yes/No, Pass/Fail.枚举型有多种取值, 如: 颜色有红/黄/绿, 形状有方/圆/梯. 这些值之间一般没有大小关系.实型如: 人的身高, 体重…

WGS84坐标转BD-09坐标(wgs84转百度)

推荐使用方法2 &#xff01;&#xff01;&#xff01; Web服务API | 百度地图API SDK 方法1 定义一个待转换的坐标数组。 // 待转换的坐标数组 var points [new BMap.Point(116.404, 39.915),new BMap.Point(121.48044, 31.236985),new BMap.Point(113.952051, 22.538413),//…

如何在多个端口上运行 SSH 服务器?

SSH&#xff08;Secure Shell&#xff09;是一种用于安全远程访问和管理服务器的协议。默认情况下&#xff0c;SSH服务器在Linux系统上使用22号端口进行通信。但是&#xff0c;有时我们可能需要在多个端口上运行SSH服务器&#xff0c;以满足特定的需求或增强服务器的安全性。 本…

spring如何解决循环依赖

一、代码 Component public class BService {Autowiredprivate AService aService;public void work(){System.out.println("bservice的工作");} }Component public class AService {Autowiredprivate BService bService;public void work(){System.out.println(&q…

SpringBoot 使用事务报错:No transaction aspect-managed TransactionStatus in scope

当使用Spring Boot进行开发时&#xff0c;你可能会遇到以下错误之一&#xff1a;“No transaction aspect-managed TransactionStatus in scope”。这个错误通常发生在方法中手动回滚事务的情况下&#xff0c;但方法本身没有被Transactional注解修饰。 在本文中&#xff0c;我…

曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行

又叫骈体文&#xff0c;是和散文相对应的一种文体&#xff0c;它兴起于汉末&#xff0c;形成于魏晋&#xff0c;最盛行于南北朝&#xff0c;在初唐、中唐、唐末、五代、宋初时也盛极一时。古人语&#xff1a;两马并驾为骈&#xff0c;所以骈文最大的特点是用对偶的手法&#xf…

Maven——SDK中的构建范围,构建插件,构建参数说明

Maven 依赖使用注意 封装 Maven SDK 的 Dependency 时&#xff0c;需要注意以下几点&#xff1a; 版本控制&#xff1a;确保所依赖的 SDK 版本与当前应用程序的其他依赖项兼容&#xff0c;并在 pom.xml 文件中指定正确的版本号。 稳定性&#xff1a;使用经过稳定测试和验证的…

06. 数据结构之散列表

前言 散列表也叫作哈希表&#xff08;hash table&#xff09;&#xff0c;这种数据结构提供了键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;的映射关系。只要给出一个Key&#xff0c;就可以高效查找到它所匹配的Value&#xff0c;时间复杂度接近于O(1) 1.…

哪些因素会成为系统的瓶颈

CPU 如果存在大量的计算&#xff0c;他们会长时间不间断的占用 CPU 资源&#xff0c;导致其他资源无法争夺到 CPU 而响应缓慢&#xff0c;从而带来系统性能问题&#xff0c;例如频繁的 FullGC&#xff0c;以及多线程造成的上下文频繁的切换&#xff0c;都会导致 CPU 繁忙&…

从C#学习改善Java编码规范

最近在学习C#&#xff0c;感觉有些编码规范可以引入到Java项目中。 接口 C#中&#xff0c;Interface以大写字母I开头。例如&#xff0c;一个写数据的接口&#xff0c;命名为 IWriter。 Java中&#xff0c;则通常直接命名为Writer。 命名为IWriter的优势在于&#xff1a;一眼…

2023年下半年软考高级需要报班吗?

首先&#xff0c;对于软考高级考试报班与否的问题&#xff0c;需要根据自身的情况来做出决定。如果你有较强的自学能力&#xff0c;且具备丰富的实际工作经验和技术知识&#xff0c;那么不报班也完全可以自学备考。但如果你对软件工程的知识掌握程度较低&#xff0c;或者时间紧…

c语言全局变量和局部变量问题汇总

✅作者简介&#xff1a;嵌入式领域优质创作者&#xff0c;博客专家 ✨个人主页&#xff1a;咸鱼弟 &#x1f525;系列专栏&#xff1a;单片机设计专栏 &#x1f4c3;推荐一款求职面试、刷题神器&#x1f449;注册免费刷题 1、关键字static的作用是什么&#xff1f; 定义静态变…

服了呀,00后怎么这么卷....

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条…

掌握了它,软件测试拿下25K轻轻松松!

了解软件测试这行的人都清楚&#xff0c;功能测试的天花板可能也就15k左右&#xff0c;而自动化的起点就在15k左右&#xff0c;当然两个岗位需要掌握的技能肯定是不一样的。 如果刚入门学习完软件测试&#xff0c;那么基本薪资会在7-8k左右&#xff0c;这个薪资不太高主要是因…

Reptile-master编译安装

服务端和客户端都用一个包了。 设置好信息&#xff0c;就可以编译了。make config,然后是make&#xff0c;make install。 在客户端主机上也要make config 编译客户端的命令是make client 然后是进入output目录./client就可以控制服务端了。 主要是设置几个信息&#xff0c…

CODEC 基础知识

&#xfeff; ASDOUT : ADC data output  DSDIN : DAC data input  LRCK : Left/Right data alignment clock  SCLK : Bit clock &#xfeff; MCLK 256 LRCK 或者 MCLK384 LRCK different audio data formats:  I2S …

前端面试题整理8

1.Js浏览器兼容性怎么解决&#xff1f; 解决Js浏览器兼容性问题可以采用以下方法&#xff1a; 使用polyfills填充缺失的API。使用特性检测来判断浏览器是否支持某个API&#xff0c;然后根据情况使用不同的代码。使用框架或库来处理兼容性问题&#xff0c;如jQuery、Modernizr…

网页JS自动化脚本(八)使用网页专属数据库indexedDB进行数据收集

我们在网页上进行的活动,往往都需要进行收集一些简单的数据,但是因为浏览器的安全原因,浏览器基本上是无法与本地的操作系统直接产生数据交互的,这本来就是一个由于安全问题生产的无解问题,在浏览器里面是内置了几种数据库的,其中一种就是indexedDB,可以用来储存一些非常小的数…

麓言信息零基础学习UI设计需要会代码吗?

最近一些在学习UI设计的伙伴经常会问到我一个问题&#xff0c;零基础学习UI设计需要会代码吗&#xff1f;我要是不会代码&#xff0c;以后是不是找不到工作啊&#xff0c;今天就针对这问题呢&#xff0c;给大家做一个详细的解答。   首先我们要知道作为一名UI设计师工作范围…

flutter-读写二进制文件到设备

看了下很多文章&#xff0c;本地文件存储都只有存储txt文件&#xff0c;我们探索下存储二进制文件吧。 保存二进制文件到设备硬盘上。 我们保存一个图片到手机本地上&#xff0c;并读取展示图片到app上。 以百度logo图为例子 写入图片 逻辑如下&#xff1a; 获取本地路径 -&g…