杨辉三角在数学上是一道非常经典的题目,今天我们尝试使用C语言在屏幕上打印杨辉三角。
一、杨辉三角的特点
我们举4行杨辉三角为例,将杨辉三角看作一个二维数组和,分别为 i 行 j 列。
通过观察我们可以发现,当 i==j 时,arr [i] [j] ==1;当 j ==0 时,我们的arr [i] [j] ==1;
在杨辉三角内部的数,它的值是由它上方的数和左上方的数相加得来的。
例如2是由上方的1+左上方的1得来,3由上方的1+左上方的2得来;
二、解题思路
主函数定义:
首先定义主函数,并且分装两个函数实现我们的数组赋值和打印。
我们定义一个函数yanghui用来给我们的二维数组赋值杨辉三角的内容;定义一个函数print用来打印我们赋值好的函数。
例如我们打印8行杨辉三角,那么我们的主函数就是这样的:
int main()
{
int arr[8][8] = { 0 };
yanghui(arr,8);
print(arr,8);
return 0;
}
定义一个8行8列的二维数组,给yanghui和print函数传参。
yanghui函数实现
定义好主函数以后,先实现我们的yanghui函数。
首先for循环嵌套for循环给我们的二维数组赋值。
由杨辉三角的特点我们可以知道:
当 i==j 时,arr [i] [j] ==1;
当 j ==0 时,arr [i] [j] ==1;
剩余情况下,arr [i] [j] = arr [i - 1] [j] + arr [i - 1] [j - 1];
所以我们使用if语句进行判断。
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j)
{
arr[i][j] = 1;
}
else if (j == 0)
{
arr[i][j] = 1;
}
else
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
print函数的实现:
print函数的实现较为简单,我们只需要定义 i 和 j 在for循环中循环打印即可。
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
三、完整代码:
至此,使用C语言实现杨辉三角的代码就已经全部完成了。下面附上完整代码:
void yanghui(int arr[][8], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == j)
{
arr[i][j] = 1;
}
else if (j == 0)
{
arr[i][j] = 1;
}
else
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
}
}
void print(int arr[][8], int n)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[8][8] = { 0 };
yanghui(arr,8);
print(arr,8);
return 0;
}
完。