杨辉三角形(简明易懂)
描述
编程输入一个正整数N,输出杨辉三角的前N行。用二维数组实现,先把各个数值存储到数组中,再输出。
输入
一个整数N,N<20。
输出
按示例格式输出,一行中整数之间隔一个空格。
代码段
#include<stdio.h>
//主要思路:利用二维数组,先在1个100*100的二维素组里全部存储1
//再用杨辉三角的核心思想 a[i][j]=a[i-1][j-1]+a[i-1][j];
//(即每一项的数组值等于这个数组上一列的值+这个数组上一行同时上一列的值)
//最后依次输出,注意格式(用标记flat法)
int main(){
int i,j,n,flat=1;
int a[100][100];
scanf("%d",&n);//输出想要显示出杨辉三角的行数值
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=1;
}
}
for(i=1;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++)
{ flat=1;
for(j=0;j<=i;j++)
{
if(flat==1)
{printf("%d",a[i][j]);flat=0;
}
else
printf(" %d",a[i][j]);
}
printf("n");
}
}
如果想要把数据居中,呈现出一下效果,可以继续改善
以下代码
#include<stdio.h>
//主要思路:利用二维数组,先在1个100*100的二维素组里全部存储1
//再用杨辉三角的核心思想 a[i][j]=a[i-1][j-1]+a[i-1][j];
//(即每一项的数组值等于这个数组上一列的值+这个数组上一行同时上一列的值)
int main(){
int i,j,n,k;
int a[100][100];
scanf("%d",&n);//输出想要显示出杨辉三角的行数值
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=1;
}
}
for(i=1;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(k=0;k<26-6*i/2;k++)
printf(" ");
for(j=0;j<=i;j++)
{
printf("%6d",a[i][j]);
}
printf("n");
}
}