记录打印杨辉三角-C语言
#include<stdio.h>
int main(){
int i,j,k;
//输出十行,ns表示上一行的数据,nx表示当前行的数据,ts表示计算当前行时的临时数据
int ns[11]={0},nx[11]={0},ts[11]={0};
//控制行数:0~9共十行
for (i = 0; i < 10; i++){
//第一行
if (i == 0) printf("%d ", 1);
//第二行
if (i == 1){
printf("%d %d", 1,1);
ns[0]=1;ns[1]=1;
}
//i=2时,即从第三行开始
if(i>1){
for (j = 0; j <= i; j++){
//第一个后最后一个数总是为1
if(!j || j == i)
nx[j] = 1;
else
nx[j] = ns[j-1]+ns[j];//第j个数等于它肩上的两个数之和
printf("%d ", nx[j]);
ts[j] = nx[j];//临时数组记录当前行的值,等下把它们放到ns中去,给下一次循环使用
}
//将ts的值放到ns中
for(k = 0;k<=i;k++){
if(!k || k==i) ns[k]=1;
else ns[k] = ts[k];
}
}
//没输出一行后换行
printf("\n");
}
return 0;
}