题目描述
打印如下形式的杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
输入
杨辉三角形阶数
输出
杨辉三角形。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
样例输入 复制
6
样例输出 复制
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
提示
① 杨辉三角形的特点:第一列和对角线上的元素值均为1,即a[i][0]=a[i][i]=1;其余位置元素的值=上一行本列元素值+上一行前一列元素值,如第三行第二列2就是第二行第一列+第二行第二列,计算公式为a[i][j]=a[i-1][j-1]+ a[i-1][j]。
② 应先对第一列和对角线元素赋值,然后再为其它元素赋值。
解析:这道题的关键在于赋值和打印,虽然要求打印一个三角形的,但是我们可以声明一个正方形的数组,然后给三角形区域赋值,最后也只展示三角形的。根据提示,我们可以先给第一列和对角线上赋上1,然后利用提示里的公式做即可,无论是赋值还是打印都要用循环嵌套来做,也是一个比较简单的方法。
如下是代码(如有不对欢迎指正)
#include <stdio.h>
int main()
{
int a[10][10];
int n;
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++){
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<n;i++){
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+ a[i-1][j];
}
}
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}