要打印杨辉三角,我们首先要观察杨辉三角中数的规律:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 5 1
... ... ...
如图,我们可以把杨辉三角中前面的空格先省掉,观察数的规律,可以把这些数看做一个二维数组:
1、二维数组第一列的数和对角线的数(即行和列相等的数)都为1
2、当行大于2时,其他的数为它上面的两个数的和,假设行我们用i表示,列用j表示,那么此时arr[i][j]=arr[i-1][j]+arr[i-1][j-1]
3、加上空格,打印杨辉三角,假设要打印一个10行的杨辉三角,那么第一行有九个空格,第二行8个空格,第i行就有10-i个空格
4、为了美观,我们把这些数统一用%3d打印
下面是具体的实现:
#include<stdio.h>
#include<windows.h>
// 1
// 1 1
// 1 2 1
// 1 3 3 1
// 1 4 4 6 1
//1 5 8 10 7 1
int main()
{
int arr[10][10] = { 0 };
int i = 0;
int j = 0;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (j == 0)
{
arr[i][j] = 1;//第一列的1
}
if (i == j)
{
arr[i][j] = 1;//对角线的1
}
if (i>1)
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
for (i = 0; i < 10; i++)//打印空格
{
for (j = 0; j <10-i; j++)
{
printf(" ");
}
for (j = 0; j <= i; j++)//打印数
{
printf("%3d ", arr[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
效果实现: