8.11 用函数编程计算并输出如图 8-10 所示的杨辉三角形。
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1
输入
无。
输出
请参考样例输出。
样例
标准输入复制文本 |
标准输出复制文本 |
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 |
解题思路:
先要观察杨辉三角的规律:
1、第一列和最外侧均是1
2、递推思路为每个数等于它上方两数之和
函数版本
#include <bits/stdc++.h>
#define N 7
void ShuRuYH(int a[N][N], int n=7)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//是j<=i,目的是要形成正三角而非矩阵
{
if(j==0||j==i){
a[i][j]=1;//观察杨辉三角即可得知第一列和最外侧均为1
}
else{
a[i][j]=a[i-1][j-1]+a[i-1][j];//简单的递推思想,观察得出规律即可~
}
}
}
}
void ShuChuYH(int a[N][N], int n=7)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");//记得换行!
}
}
int main()
{
int n=7,a[N][N]={0};
ShuRuYH(a,n);
ShuChuYH(a,n);
}
无函数简单初学版
#include <bits/stdc++.h>
#define N 7
int main()
{
int n=7,a[N][N]={0};
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)//是j<=i而不是j<=n,目的是要形成正三角而非矩阵
{
if(j==0||j==i){
a[i][j]=1;//观察杨辉三角即可得知第一列和最外侧均为1
}
else{
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("%4d",a[i][j]);
}
printf("\n");//记得换行!
}
return 0;
}