C语言学习笔记:通过二维数组打印杨辉三角形

首先我们要知道杨辉三角形是什么:

杨辉三角形的构造规则:

第一行:只有一个数字1。

后续行:从第二行开始,每一行的第一个和最后一个数字都是1。其余位置的数字是它正上方和左上方两个数字的和。

通过图片可以看出,杨辉三角的行数与列数是相等的;且从第三行开始有了不为1的数字,所以我们可以想到在第二行之前的二维数组内都是1,第二行以后二维数组中,每一行的部分,首位为1,其他数则是上一行的数字和上一行左边的数字的和,所以我们可以写出这部分代码:

在代码主函数内,我们首先声明一个用来控制杨辉三角行数的变量,这里用n;用户输入想要的行数,通过scanf函数赋值给n;然后我们再声明一个二维数组,因为每行首尾都是1,所以我们就可以给 m[0][0],m[1][0]m[1][1],以及m[i][0]和m[i][i]赋值1。

我们通过一次嵌套的if循环来控制赋值,外层循环 i 来控制行数,内层循环则给每行内的数字赋值,m[i][j] = m[i - 1][j - 1] + m[i - 1][j]。

赋值后再通过嵌套循环进行打印,i为打印行数, j为每行的列数,因为i从0开始,0行打印1个;1行打印2个,所以j的判断范围就是 j<i+1时打印,我们再每次外层循环执行完一次后打印一个换行符就可以了。因为要打印的工整一些,打印数组时可以留一个空格。

相关推荐
Lyre丶5 分钟前
Ubuntu 24.04 LTS 安装GAMIT
linux·经验分享·学习·ubuntu·gamit
strongwyy29 分钟前
esp32墨水屏学习3
学习
_dindong31 分钟前
Linux系统编程:线程概念
linux·运维·笔记·学习
Olrookie39 分钟前
若依前后端分离版学习笔记(十六)——scoped、路由跳转
前端·笔记
Olrookie42 分钟前
若依前后端分离版学习笔记(十七)——ruoyi开发规范&流程,请求流程,依赖引入,组件注册&通信
前端·笔记
上园村蜻蜓队长1 小时前
FPGA自学笔记--VIVADO FIFO IP核控制和使用
笔记·fpga开发
小二·1 小时前
前端笔记:HTML output标签介绍及用法
javascript·笔记·html5
杰尼君1 小时前
STM32CubeMX笔记(11)-- AD模块使用
笔记·stm32·嵌入式硬件
_JinHao2 小时前
Cesium Viewer对象详解——Cesium基础笔记(快速入门)
前端·javascript·笔记·3d·webgl
贝塔实验室2 小时前
LDPC码的概念
科技·学习·程序人生·算法·学习方法·程序员创富·改行学it