杨辉三角问题:
杨辉三角是按照一定规律排列而成的数字。在这里我们可以用程序来进行输出,比较容易。
首先用C语言说明问题代码,在本文章最后有C++的代码供参考。
杨辉三角的形式为:
*
**
*
实际上我们可以对他进行简化:
*
**
然后加上输出几个空格,这样子就变成了三角行了。。
所谓的杨辉三角每一行的数字都有来源,是它的肩膀上的两个数字相加而成的,在使用二维数组的同时,可以用语句:
a[i][j]=a[i-1][j]+a[i-1][j-1]
然后配合空格的输出完成:(上代码)
#include<stdio.h>
int main()
{
int n,a[10][10]={0},i,j,k;
while (scanf("%d",&n)!=EOF&&(n>=1&&n<=10))
{
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(i==j||j==0) //买一行的第一个是1加上对角线是1
a[i][j]=1;
else
a[i][j]=a[i-1][j]+a[i-1][j-1];//其余的用肩膀上的两个数字相加
}
}
//输出程序:(倒置的杨辉三角输出)
for(i=0;i<n;i++)
{
for(j=0;j<i;j++) //输出空格
printf(" "); //空格由少变多
for(k=0;k<n-i;k++)
{
printf("%3d",a[n-i-1][k]); //倒着从数组里边取出数字输出
printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
//正杨辉三角输出:
for(i=0;i<n;i++)
{
for(j=n-i;j>0;j--)
printf(" ");
for(k=0;k<=i;k++)
{
printf("%3d",a[i][k]);
printf(" ");
}
printf("\n");
}
}