Description
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1 1 1 1 1 1 1 2 1
有两个地方要注意:初始值和格式
#include<stdio.h> int main() { int n,i,j; int a[50][50]; while(scanf("%d",&n)!=EOF) { if(n==1) printf("1\n"); else if (n==2) printf("1\n1 1\n"); else { for(i=1; i<=n; i++) { a[i][1]=1; a[i][i]=1; } //初始值的赋值,每行第一个和最后一个是1,最后一个坐标为(i,i) for(i=3; i<=n; i++) { for(j=2; j<=i-1; j++)//这个for循环的条件要注意,要排除最后一个,因为已经赋值为1了 { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=1; i<=n; i++) { for(j=1; j<=i; j++)//这里的条件不能写成j<=n,因为要跟着行走哟~ { if(j!=i) { printf("%d ",a[i][j]); } else { printf("%d",a[i][j]); } //这里这段代码是为了控制格式的,因为要求最后一个不能有空格,两个整数之间有空格 } printf("\n"); } } printf("\n"); //该处的换行不能写在上面,因为当n=1和n=2时也要有空行 } return 0; }