【输出N行杨辉三角形】两种输出方式(直角三角形型和等腰三角形型)C语言
2023-09-11 14:18:53 时间
要想用C语言实现杨辉三角形的输出,就首先需要明白杨辉三角形是怎么来的。
首先我们规定每一行第一个和最后数一个为1,那么从第一行开始就只有一个1;第二行就有两个1,从第三行开始就体现出杨辉三角形的特点了,即就是——每一个等于它上方两个数的和。就像下图一样:
既然明白了杨辉三角形的底层逻辑,要想使用C语言来实现它那么针对这种元素比较多的又比较又规律的首先就要想到使用数组了。
我们使用一个二维数组实现杨辉三角形,如下是一个6×6的矩阵(我们可以用二维数组表示它)
除了特殊的第一列,从第二行第二列的元素开始,它的值就是它头顶上元素的值加上左上角的值
编写代码:
#include<stdio.h>
#define N 10 //需要显示的行数
int main(void){
int i,j;
int a[N][N]={1}; //定义一个二维数组并将第一个元素置1,其余置0
for(i=0,j=0;i<N;i++){
a[i][j]=1;
}
//给数组放置杨辉三角形数
for(i=1;i<N;i++){ //从第1行开始到最后一行
for(j=1;j<N;j++){ //从第1列开始到最后一列
a[i][j]=a[i-1][j-1]+a[i-1][j]; //根据规律计算该元素的值
}
}
//输出杨辉三角
for(i=0;i<N;i++){
for(j=0;j<N;j++)
if(a[i][j]!=0)printf("%-5d ",a[i][j]); //-5表示左对齐,输出数据域宽为5
printf("\n");
}
return 0;
}
运行结果如下(输出了十行)
看完代码可能有人会问:既然你说了要规定每一行第一个和最后数一个为1,你怎么只定义了第一列为1呢。我觉得你可以再看一下本文开头的第二张图,就可以明白每行末尾的1我们是如何定义的了。当然你也可以直接定义。
—————————————以上是第一种输出方式(直三角形型)—————————————
—————————————以下是第二种输出方式(等腰三角形型)————————————
编写代码:
#include<stdio.h>
#define N 10 //需要显示的行数
int main(void){
int i,j,k;
int a[N][N]={1}; //定义一个二维数组并将第一个元素置1,其余置0
for(i=0,j=0;i<N;i++){
a[i][j]=1;
}
for(i=1;i<N;i++){
for(j=1;j<N;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j]; //根据规律计算该元素的值
}
}
//输出等腰三角形型杨辉三角
for(i=0;i<N;i++){
//控制每行前面空格数
for(k=0;k<N-i;k++)
printf(" ");
//元素输出
for(j=0;j<N;j++)
if(a[i][j]!=0)printf("%6d",a[i][j]); //默认右对齐,域宽为6
printf("\n");
}
return 0;
}
其实只需要将第一次的代码中的杨辉三角输出的地方添加控制每行首个元素前的空格就行了。
效果如下:
完~~谢谢!
相关文章
- [C语言] 字符串的输出格式
- 【240行拿下】基于C语言 实现通讯录管理系统 带文件保存及读取功能
- 【C语言】数据类型,计算机单位,打印符号
- 基于C语言实现的(控制台)景区旅游信息管理系统【100010647】
- 【C语言】写一个函数,用对输入的五个字符串按由小到大顺序排列输出。
- 输入一个二维数组,判断是否有【鞍点】,若有请输出鞍点(C语言)
- 《数据结构与算法 C语言版》—— 第3章 栈 与 队 列
- 《C语言解惑》—— 2.6 字符输入要搞特殊化
- 【华为OD机试 2023最新 】最大利润(C语言题解 )
- 初学C语言----反向输出一个四位数
- printf()的左对齐和右对齐 —— C语言
- 1006 换个格式输出整数 (15 分)C语言
- 1009 说反话 (20 分)C语言
- C语言学习笔记——数据类型深入了解
- linux下C语言实现可打印字符及键值的输出