杨辉三角,是在二项式系数三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
杨辉三角的每一位数都是上面两位数的和,如图:
用C语言可以对杨辉三角进行输出。程序如下:
方法一:用两个一维数组来计算杨辉三角并输出
#include
#include
void copy(const int* arr_2, int* arr_1)
{
assert(arr_1);
assert(arr_2);
int i_2 = 0;
while (*(arr_2 + i_2))
{
*(arr_1 + i_2) = *(arr_2 + i_2);
i_2++;
}
}
void print(int* arr_2)
{
int i_1 = 0;
while (*(arr_2 + i_1))
{
printf("%d ", *(arr_2 + i_1));
i_1++;
}
printf("\n");
}
int main()
{
int arr1[10] = { 1 };
int arr2[10] = { 1 };
int n = 0;
int i = 0;
int j = 0;
scanf("%d", &n);//输入杨辉三角的行数
printf("\n");
printf("%d\n", arr1[0]);
//行数
for (j = 2; j < n+1; j++)
{
//每行数
for (i = 1; i < j; i++)
{
arr2[i] = arr1[i] + arr1[i - 1];
}
print(arr2, i);//打印杨辉三角的一行
copy(arr2, arr1);//复制函数
}
return 0;
}
方法二:用一个二维数组计算并输出杨辉三角
#include
int main()
{
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
int n = 0;
scanf("%d", &n);//输入杨辉三角的行数
printf("\n");
//计算杨辉三角的数,放入二维数组中,只用到下三角
for (i = 0; i < n; i++)//行数
{
for (j = 0; j <= i; j++)
{
if (j == 0)
{
arr[i][j] = 1;
}
if (i == j)
{
arr[i][j] = 1;
}
if ((j < i) && (j != 0))
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
//输出二维数组,即杨辉三角
for (i = 0; i < n; i++)
{
for (j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
两种方法输出的杨辉三角结果都一样,如下图:
要想输出为金字塔形状的,只需在输出每一行之前输出相应的空格数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)