用C语言打印出杨辉三角形。
这里采用的是一维数组的思路;
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
printf("请输入杨辉三角的行数:");
scanf("%d",&num);
int a[num*(num+1)/2];
for(int i=1;i<=num;i++){
for(int j=1;j<=(num-i);j++){
printf(" ");
}
int h=i-1;
a[i*(1+i)/2]=1;
a[i*(i+1)/2-i+1]=1;
printf("%-4d",a[i*(1+i)/2-i+1]);
for(int e=1;e<=(i-2);e++){
a[i*(i+1)/2-i+1+e]=a[h*(h+1)/2-h+e]+a[h*(h+1)/2-h+1+e];
printf("%-4d",a[i*(i+1)/2-i+1+e]);
}
if(i>1)
printf("%-3d",a[i*(1+i)/2]);
printf("\n");
}
}
代码演示如下:
输入杨辉三角的行数,就可以得到对应的杨辉三角。
定义一个整数数组a,杨辉三角的特性是前n行数的总数为n*(n+1)/2,每一行的第一个数和最后一个数都为1,设i为行数,所以每一行的第一个数就是a[i*(i+1)/2-i+1]=1,每一行的最后一个数就为a[i*(i+1)/2]=1,每个数等于它上方两个数之和,使用双重for循环,知道这些特性就可以得到代码啦。
希望对您有帮助。