首先要理解什么是杨辉三角:
其次就是如何利用杨辉三角中的规律将其使用代码进行实现:
1> 初始化数组并对边界进行赋值
2> 进行非边界位置数据的计算
3> 按照三角形的方式进行显示
************************************************************************************************************************************
源码:
#include
#include
#include
void Triangle(int lines)
{
//初始化
int **triangle = (int **)malloc(sizeof(int*)*lines);
for (int i = 0; i < lines; i++)
{
*(triangle+i) = (int *)malloc(sizeof(int)*lines);
for (int j = 0; j < lines; j++)
{
*(*(triangle + i) + j) = 0;
}
}
for (int i = 0; i < lines; i++)
{
*(*(triangle+i)+0) = 1;
*(*(triangle + i) + i) = 1;
}
//计算
for (int i = 1; i < lines; i++)
{
for (int j = 1; j < lines-1; j++)
{
*(*(triangle + i) + j) = *(*(triangle + i-1) + j)+ *(*(triangle + i - 1) + j-1);
}
}
//输出
for (int i = 0; i < lines; i++)
{
for (int k = lines; k > i; k--)
{
printf(" ");
}
for (int j = 0; j < lines; j++)
{
if (*(*(triangle + i) + j) == 0)
{
printf(" ");
}
else
{
printf("%4d", *(*(triangle + i) + j));
}
}
printf("\n");
}
}
int main()
{
int lines = 0;
printf("请输入需要显示的杨辉三角的行数:");
scanf_s("%d",&lines);
Triangle(lines);
return 0;
}
部分解释:
为了方便控制所要显示的杨辉三角的行数,就需要传入指定行参数来构造指定大小的数组;
于是也就产生了新的问题:
a[lines][lines]这类的声明是不被允许的,因为[]内部只能够是常量,这时候我们使用指针来动态分配相应内存进而来构造二维数组;
首先分配一个指针数组(数组内部存放10个指针,表示行数),然后循环对每个指针进行分配10个int空间即可。