1。什么是杨辉三角:
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
为了方便计算,将所有数据右移。
代码1:
#include <stdio.h>
int main()
{
int arr[17][17] = { 0 };
int i = 0;
//
int n = 0;
while (n < 1 || n>16)//输入的数应满足: 0<n<16,否则while 一直循环;
{
printf("请输入杨辉三角形的行数:");
scanf("%d", &n);
}
//将杨辉三角数据填充进数组里
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < n; j++)
{
if (j == 0)
arr[i][j] = 1;//将第0列的数据全部给1
if (i == j)
arr[i][j] = 1;//将对角线的数据全部给1
if (i >= 2 && j >= 1)//i >= 2 && j >= 1时
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];//杨辉三角核心部分
}
}
//打印二维数组
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j < i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
代码2:
#include <stdio.h>
int main()
{
int arr[17][17] = { 0 };
int i = 0;
//
int n = 0;
while (n < 1 || n>16)//输入的数应满足: 0<n<16,否则while 一直循环;
{
printf("请输入杨辉三角形的行数:");
scanf("%d", &n);
}
//将杨辉三角数据填充进数组里
for (i = 0; i < n; i++)
{
int j = 0;
for (j = 0; j <= i; j++)//此处直接限制仅填充二维数组的下三角
{
if (j == 0)
arr[i][j] = 1;//将第0列的数据全部给1
if (i == j)
arr[i][j] = 1;//将对角线的数据全部给1
if (i >= 2 && j >= 1)//i >= 2 && j >= 1时
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];//杨辉三角核心部分
printf("%d ", arr[i][j]);//打印二维数组
}
printf("\n");
}
return 0;
}