题目:.在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
分析:首先找出杨辉三角的规律:每行的第一个数都为1,紧接着下一项的值都为上一行两个值相加。那么就涉及到一个点:如何保存“上一行的两个值”?,这里我们可以设置一个二维数组进行保存。还有一个点:每行的最后一个值是1,但是上一行对应“相加数”只有一个值,那这个1如何得到?可以把二维数组全部初始化为0,这样,每一个二维数组的坑里都有数值,那么1=1+0。这样不断填充二维数组,最后输出的时候按照规定输出即可。图解如下:
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define N 9
void SetTriangle(int(*a)[N])
{
for (int row = 0; row < N; row++)
{
for (int col = 0; col <=row; col++)
{
a[row][0] = 1;//每一行的第一列值都为1
if (row >= 1 && col >= 1)
{
a[row][col] = a[row - 1][col - 1] + a[row - 1][col];
}
}
}
}
void PrintTriangle(int(*a)[N])
{
for (int row = 0; row < N; row++)
{
for (int col = 0; col <=row; col++)
{
printf("%3d ", a[row][col]);
}
printf("\n");
}
}
int main()
{
int arr[N][N] = { 0 };
SetTriangle(arr);
PrintTriangle(arr);
system("pause");
return 0;
}
运行结果: