这类题目,一般是求第n行长啥样,也有求从第一行打印到第n行的 此处,只做了 第n行长啥样 : #include<stdio.h> #include<string.h> //求 杨辉三角形的第n行长啥样 int a[34]; int b[34]; int main(){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[1] = 1; a[2] = 1; b[1] = 1; int n; scanf("%d",&n); for(int i = 3;i <= n;i++){ for(int j = 2; j <= i-1;j++){ b[j] = a[j - 1] + a[j]; } b[i] = 1; for(int x = 1; x <= i;x++){ a[x] = b[x]; } } for(int i = 1;i <= n;i++) if(i == 1) printf("%d",a[i]); else printf(" %d",a[i]); return 0; } 思路: 需要两个数组a,b,先将a[1] = 1;a[2] = 1 再求第n行数组长啥样时,可以先以a为基础,计算b的值,然后将b复制进a 由上图的连线可以知道: for(int j = 2; j <= i-1;j++){ b[j] = a[j - 1] + a[j];