问题描述:打印出如图所示三角形(打印十行)
中间的数据等于其上一行左上,右上的数据和,第i层有i列需要求解i个数据,可以用二维数组存储杨辉三角形。规律:第一列都为1,主对角线都为1,从第三行起,中间位置元素的值等于其上一行对应位置元素及其前一个元素之和,值就是从当前推到到下一行的递推式,从此可求出杨辉三角行的任意一行。
#include<stdio.h>
void yanghui(){
int n,i,j,a[20];
printf(" 1\n");
a[1]=a[2]=1;
printf(" %-4d %-4d\n",a[1],a[2]);
for(i=3;i<=10;i++)
{
a[1]=a[i]=1;
for(j=i-1;j>1;j--)
a[j]=a[j]+a[j-1];
for(j=1;j<=i;j++)
printf(" %-4d",a[j]);
printf("\n");
}
}
int main()
{
yanghui();
}
#include <stdio.h>
#define N 10
int main()
{
int arr[N][N] = {0};
int i=0;
for(i = 0; i<N; i++)
{
int m = 0; //定义m,使其输出空格,直角三角形变为正三角形
for(m = 0;m<N-i;m++)
{
printf(" ");
}
int j=0;
for(j = 0;j<=i; j++)
{
if((0 == j)||(i == j))
{
arr[i][j] = 1;
}
else
{
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
}
printf("%4d",arr[i][j]);
}
printf("\n");
}
return 0;
}