题目:
打印近似杨辉三角,行数n自选
百度找的杨辉三角,参考一下:
解析:
把它的全部元素左对齐,就可以看成近似杨辉三角的样子
1
1? 1
1? 2? 1
1? 3? 3? 1
1? 4? 6? 4? 1
……
?每个数等于它上方两数之和
每行数字左右对称,由1开始逐渐变大
行数与列数相同,第n行有n列,首选二维数组,先给数组赋值,再打印数组
先搭元素为1的框架,每行第零列元素为1,每行末列元素为1
再根据每个数等于它上方两数之和,给其它元素赋值
逻辑:
先按规律给二维数组赋值,再打印所需数组元素
注意数组越界问题,N=n+2
参考代码:
// 打印杨辉三角,行数n自选
// 1
// 1? 1
// 1? 2? 1
// 1? 3? 3? 1
// ……
#define n 7 // n:1~16
#define N n+2
#include<stdio.h>
void init_arr(int arr[N][N])
{
int i = 0;
int j = 0;
for (i = 1; i < N; i++)
{
arr[i][1] = 1; // 每行第1列为1
for (j = 2; j <=i; j++)
{
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
}
void print_arr(int arr[N][N])
{
int i = 0;
int j = 0;
for (i = 1; i < N; i++)
{
for (j = 1; j <= i; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main()
{
int arr[N][N] = { 0 };
init_arr(arr);
print_arr(arr);
return 0;
}
运行结果: