需要注意题目所提供的目标三角形形状,若去掉下面代码中的注释,最后打印的三角形是对称的。

#include<stdio.h>
#define N 100
int main(){
	int n;
	scanf("%d",&n);
	int a[N][N];
	for(int i=0;i<n;i++){
		/*for(int k=0;k<n-i-1;k++)
			printf(" ");*/
		for(int j=0;j<=i;j++){
			if(j==0||i==j)
				a[i][j]=1;
			else
				a[i][j]=a[i-1][j]+a[i-1][j-1];	
			printf("%d",a[i][j]);
			if(i==j)
				printf("\n"); 
		}
	}
	return 0;
}

最后,附上二维数组存储杨辉三角的具体情形。参考链接

​
很显然可以用二维数组a[i][j]来表示三角形矩阵
            a[0][0]
        a[1][0] a[1][1]
    a[2][0] a[2][1] a[2][2]
a[3][0] a[3][1] a[3][2] a[3][3]
 
观察,易得知:a[i][j] = a[i-1][j-1] + a[i-1][j]
同时要注意数组下表不能越界,故有:
i-1<n ——>i<n-1
j-1<n ——>j<n-1