C语言笔记--利用二维数组输出杨辉三角形

article/2025/9/23 12:09:35

杨辉三角形又称帕斯卡三角形,其余的话就不多说,先看下面的三角形:

                                       1

                                   1       1

                              1        2        1

                       1          3       3          1

                 1           4        6         4          1

          1           5          10       10       5           1

                                ..............

这里我就只列出前面几行,从三角形中我们可以明显地看出规律:a[i][j]=a[i-1][j-1]+a[i-1][j+1],一个数是上一层改数的左边加右边,比如:2=1+1,3=1+2。在网上也有很多关于这个算法的实现,这次我以自己的理解,利用二维数组输出杨辉三角形,并且我认为二维数组输出方式更容易理解。但需要注意的是,数组在内存中是线性排列的。

分析:把输出为空格的初始化为0,需要注意数组的列数问题,因为最后一行的首个1也需要符合a[i][j]=a[i-1][j-1]+a[i-1][j+1],所以在定义数组的列数时,需要再额外多两行,即当输出6行时,最后一层是0 1 0 5 0 10  0 10 0 5 0 1 0,所以列数与行数关系是:

c=r*2+1;所以运算时,列数要从第二列开始,预留一列给最后行的运算。

#include<stdio.h>
#include<stdlib.h>
#define R 6//行
#define C ((R)*2+1) //列
#define First (C)/2//首行的1列下标
void main()
{int yanghui[R][C]={0};//开始全部初始化为0yanghui[0][First]=1;//首行的1初始化for(int i=1;i<R;i++)//从第二行开始{for(int j=1;j<C;j++)//从第二列开始{yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j+1];//关系可得}}for(int i=0;i<R;i++)//格式输出{for(int j=0;j<C;j++)if(yanghui[i][j]==0)//等于0的输出3个空格printf("   ");else//输出数字printf("%3d",yanghui[i][j]);printf("\n");//换行}system("pause");
}

 6行输出效果:

             

10行输出:

             

最后内心的话:坚持写博客真的不容易,最近就因为专业上的事,停更了很久,即将又过去一个月,希望自己还能继续坚持。


http://chatgpt.dhexx.cn/article/ywftFL8T.shtml

相关文章

c语言——杨辉三角(输出任意行数的杨辉三角)

下面为大家介绍用二维数组来输出任意行的杨辉三角。有以下步骤&#xff1a; 1&#xff1a;利用一个全局变量来控制数组&#xff0c;从而控制杨辉三角大小。 2&#xff1a;分别用for循环进行对杨辉三角进行赋值。&#xff08;利用它每个数等于它上方两个数和的规律&#xff09; …

C语言打印输出杨辉三角案例讲解

我们先看什么是杨辉三角&#xff1a; 通过观察我们得出杨辉三角的特点&#xff1a; 1.杨辉三角的每行第一个数字都是1。 2.杨辉三角的每行最后一个数字都是1。 3.杨辉三角从第三行开始&#xff0c;每行除了第一个数字和最后一个数字都是1外&#xff1b; 其余的数字都是每个数字…

输入n,输出n行的杨辉三角.

杨辉三角&#xff1a;每个数等于它上方两数之和。 #include<stdio.h> int main() {int n;scanf("%d",&n);int a[100][100]{0};int i,j;for(i0;i<n;i){a[i][0]1;}for(i1;i<n;i){for(j1;j<i;j){a[i][j]a[i-1][j]a[i-1][j-1];}}for(i0;i<n;i){for…

C语言之输出杨辉三角的教程

题目&#xff1a;产生并输出杨辉三角的前七行 代码如下所示&#xff1a; #include <stdio.h>main(){int a[7][7];int i, j;for (i 0; i < 7; i){a[i][0] 1;a[i][i] 1;}for (i 2; i < 7; i)//关于行的循环{for (j 1; j <i; j)//关于列的循环&#xff0c;每…

c语言实现输出杨辉三角

杨辉三角 方法1:方法2:方法3: 要求&#xff1a; 输出以下的杨辉三角形&#xff08;要求输出10行&#xff09;&#xff08;12分&#xff09; 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10  5 1 : : : : : : 方法1: #include<stdio.h>#define row 10 #defin…

[C语言]杨辉三角形:编程计算并输出打印前n行杨辉三角形。请使用数组实现。

输入 输入一个正整数n&#xff08;0 < n < 20&#xff09;。 输出 输出杨辉三角形的前n行&#xff0c;相邻两项之间用一个空格隔开。 输入示例 7 输出示例 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 数据范围 输入输出均为int范围的整数 先…

C语言输出正三角形

输出这个正三角形 分析&#xff1a;行数为五行&#xff0c;然后确定每行需要输出的空格数和*号数即可 int i, j, k;for(i 1; i<5; i){/* 观察每行的空格数量 */for(j 0 ;j < 4-i ;j) {printf(" "); //输出空格}/* 观察每行*号的数量 */for(k 0; k <…

用C语言打印杨辉三角(可以根据输入的行数输出相应的杨辉三角)

C语言实现打印杨辉三角 杨辉三角如下图所示&#xff1a; 从图中可以看出杨辉三角中的数据有以下特点&#xff1a; 1.第0列及对角线上的所有元素都为1 2.其它位置的元素为上一行与该元素同列及前一列的元素相加的结果 根据上述杨辉三角中数据的特点&#xff0c;我们可以编程实…

C语言:输出杨辉三角

C语言学习记录之输出杨辉三角形 #include <stdio.h> #define N 10 //输出前十行 int main() {int arr[N][N];for (int i 0;i < N;i) { arr[i][0] 1; // 首先给每行第一个和最后一个赋值1arr[i][i] 1;}// 从第三行起&#xff0c;除了每行的1以外&#xff0c…

C++语言 输出杨辉三角形 要求输出10行。

C语言 输出杨辉三角形 要求输出10行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 #include <iostream> #include <iomanip> using namespace std; int main(){const int n11;int i,j,a[n][n];for (i1;i<n;i){a[i][i]1;a[i][1]1;}for (…

【输出N行杨辉三角形】两种输出方式(直角三角形型和等腰三角形型)C语言

要想用C语言实现杨辉三角形的输出&#xff0c;就首先需要明白杨辉三角形是怎么来的。 首先我们规定每一行第一个和最后数一个为1&#xff0c;那么从第一行开始就只有一个1;第二行就有两个1&#xff0c;从第三行开始就体现出杨辉三角形的特点了&#xff0c;即就是——每一个等于…

输出以下的杨辉三角形 要求输出10行 C语言

C语言 输出杨辉三角形 要求输出10行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 c程序设计(第四版) #include <stdio.h> #define N 10 int main() { int i,j,a[N][N];for (i0;i<N;i){a[i][i]1;a[i][0]1;}for (i2;i<N;i)for (j1;j<i-…

C语言输出杨辉三角形

C语言输出杨辉三角形 IDE&#xff1a;DEV-C 编程思想&#xff1a; 利用一维数组存储第0行数据。 例如 int Sum[ ] { 0,0,0,0,1,0,0,0,0}; 元素1表示初始时最中心元素。其位置由所想要输出的行数控制。 然后利用for循环求下一行数组元素值。具体做法如下&#xff1a; for(int …

C语言输出杨辉三角

目录&#xff1a;一、杨辉三角的解读。二、主要思路。三、代码及结果展示。 一、杨辉三角就是除了前两行外&#xff0c;后一行的数由前一行的同一位置的数与前一位数之和&#xff0c;但是唯一确定的是以1开头以1结尾就比如这样的&#xff1a; 前五行的杨辉三角 二、思路 1、先定…

C语言 输出正三角形图形

1. 原代码如下 #include<stdio.h> int main(){int row, col, i;char c 32;for(row 1; row < 6; row){for(i 5-row; i > 0; i--)printf("%c", c);for(col 1; col < 2*row-1; col)printf("*");printf("\n");}return 0; } 2. …

编写C程序输出杨辉三角

介绍&#xff1a; 杨辉三角&#xff0c;是二项式系数在三角形中的一种几何排列。在欧洲&#xff0c;这个表叫做帕斯卡三角形。帕斯卡&#xff08;1623----1662&#xff09;是在1654年发现这一规律的&#xff0c;比杨辉要迟393年&#xff0c;比贾宪迟600年。杨辉三角是中国古代数…

static,final修饰变量

static&#xff0c;final修饰符&#xff1a; 静态变量&#xff1a;&#xff08;由static修饰的变量&#xff09;&#xff0c;其共享一个内存空间&#xff0c;即在被调用运算的时候会被累积&#xff0c;除非重新开始程序&#xff1b;静态变量能被静态方法和一般方法所用&#xf…

final修饰类、变量、方法

final 修饰类、方法、变量&#xff0c;表示不可变的 final 修饰变量&#xff1a;不可变&#xff0c;必须赋初值。 final成员变量&#xff1a;必须由程序员显示的指定初始值。 成员变量随着类或对象的初始化而初始化。当执行静态初始化块时可以对类变量赋初始值&#xff1b;当执…

static,final,static final修饰变量到底有什么区别?

平时在项目中可能经常会用到一些常量&#xff0c;一般都定义成static final的&#xff0c;有时候可能会突然想到&#xff0c;到底staitc&#xff0c;final&#xff0c;static final定义的变量到底有什么关系呢&#xff1f; 通过以下例子一起看一下&#xff1a; /*** Descript…

final修饰成员变量和局部变量的区别

昨晚12点以后&#xff0c;跟人讨论问题&#xff0c;无意中聊到了final可以修饰的类型以及修饰后所具备的特点&#xff0c;可以详见 java基础问题101问(javaSE阶段知识汇总) 聊到final修饰成员变量和局部变量有什么区别时&#xff0c;只是隐约记得大概&#xff0c;没有十足把握&…