输出杨辉三角,限定用1个一维数组完成
C语言代码实现如下:
void main() {
int n, i, j=0, a[100];
n = 5;
printf("1");
printf("\n");//第一行结束
a[0] = a[1] = 1;
printf("1");
printf("1");
printf("\n");//第二行结束
//************************从第三行开始,每行第一个数恒为1,最后一个数也恒为1,中间的数
//************************为上一行的对应位置的数字之和
for (i = 2; i < n; i++) {//此处假设输出5行,第1,2行直接写出,从第3行开始计算。
a[0]=a[i] = 1;//此处为当前行的第一个和最后一个元素赋值,因为都恒为1
//因为才送从前往后的正向思维计算每一行的数值时,会造成前面计算的值被后面覆盖掉,造成计算不准确,这里采用从后往前的方式进行。
for (j =i-1; j >0; j--) {//开始计算每一行中间的数值
a[j] = a[j]+a[j-1];//相当于某一行中间的数为上一行的对应位置的数字之和
}
for (j = 0; j < i+1; j++) {
printf("%d ",a[j]);//改行元素全部计算完毕,输出之。
}
printf("\n");//打印一个换行
}
}