Author:beiyanyunyi
软件工程专业 自信某男
没有那么多人勤奋,只是你自己不行动,畏惧了其他人。
CSDN:weixin_62688213
前言
我们把杨辉三角变换成类似数学坐标系一样的图像。这样就可以拿数组来保存数据。
一、初始化
1.头文件表示
#define ROW 200
#define COL 200
2.定义一个二维数组
int a[ROW][COL] ={0};
二、定义需要的行数
int lands=0;
printf("打印行数:>");
scanf("%d",&lands);
//后面的打印数组,需要从新的一行开始
printf("\n");
三、设计函数
1.定义每列最后一个和第一个赋值1
主函数
Start_End(a,lands);
函数
思路
x=1的坐标值均为1。
y=x的坐标,值均为1。
这是一种很巧妙的定义的数组坐标,和我们的高数一样了。
--------------->x
|1(1,1)
|1(2,1)1(2,2)
|1(3,1)2(3,2)1(3,3)
|
y
void Start_End(int a[ROW][COL],int lands)
{
int y,x;
for(y=1;y<=lands;y++)
{
for(x=1;x<=y;x++)
{
if( x==1 || y==x)
{
a[y][x]=1;
}
}
}
}
2.中间的赋值
主函数
Midlle(a,lands);
函数
第二行和第一行已经在 " 定义每列最后一个和第一个赋值1 " 步骤定义。
我们可以把第二行第一个元素和第二个元素加成第三行第二个元素,第三行,只需要加一次,那么在第四行,两个数未知,在第五行,三个数未知。我们只需要x<y-1这个条件,每行的未知数个数就知道了。
例如
lands=3
y=3,y<=3
x=1且x<3-1(x<2),第三行只能一次求解。
未知的坐标值求法,他的y坐标减1,赋值上一行的y值。x坐标呢??每个未知数都是从x=2开始,那么上一行的一个x不变,另一个x-1,必须这样要求。
void Midlle(int a[ROW][COL],int lands)
{
int y,x;
for(y=3;y<=lands;y++)
{
for(x=1;x<y-1;x++)
{
a[y][x+1]=a[y-1][x]+a[y-1][x+1];
}
}
}
3.打印数组,得到杨辉三角图形
主函数
print(a,lands) ;
函数
void print(int a[ROW][COL],int lands)
{
int y,x;
for(y=1;y<=lands;y++)
{
for(x=1;x<=y;x++)
{
printf("%4d ",a[y][x]);
}
printf("\n");
}
}
总结
不是三角形啊!怎么弄的??
先赞后看,养成习惯!!! ^ _ ^ ❤️ ❤️ ❤️
代码
#include<stdio.h>
#define ROW 200
#define COL 200
void Start_End(int a[ROW][COL],int lands);
void Midlle(int a[ROW][COL],int lands);
void print(int a[ROW][COL],int lands);
int main()
{
//初始化
int a[ROW][COL] ={0};
//设置多少行
int lands=0;
printf("打印行数:>");
scanf("%d",&lands);
printf("\n");
//定义每列最后一个和第一个赋值1
Start_End(a,lands);
//中间的赋值
Midlle(a,lands);
//打印数组
print(a,lands) ;
return 0;
}
void Start_End(int a[ROW][COL],int lands)
{
int y,x;
for(y=1;y<=lands;y++)
{
for(x=1;x<=y;x++)
{
if( x==1 || y==x)
{
a[y][x]=1;
}
}
}
}
void Midlle(int a[ROW][COL],int lands)
{
int y,x;
for(y=3;y<=lands;y++)
{
for(x=1;x<y-1;x++)
{
a[y][x+1]=a[y-1][x]+a[y-1][x+1];
}
}
}
void print(int a[ROW][COL],int lands)
{
int y,x;
for(y=1;y<=lands;y++)
{
for(x=1;x<=y;x++)
{
printf("%4d ",a[y][x]);
}
printf("\n");
}
}
码字不易,大家的坚持就是我坚持下的动力,点赞后,不要忘记关注我哦!
如有错误,还请您批评改正 ^ _ ^