题目:打印杨辉三角前十行,如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
代码见真知:
定义:
int arry[10][10]; //首先定义二维数组,有行有列 int i,j;
1是比较明显的规律,首先解决:
//由题目可知,1所在的行和列是有规律的 for(i=0;i<10;i++) { arry[i][0]=1; //由题目可知第一例全为1 arry[i][i]=1; //由题可知第i行i列也全是1 }
中间部分,找规律:
for(i=2;i<10;i++) //行循环,由于1已结解决,所以直接从第三行开始 { for(j=1;j<i;j++) //第一例全为1,已解决,直接从第二列开始 { //中间的某一个数等于它上一行,它所在的一列的数与前一列的数之和 arry[i][j]=arry[i-1][j]+arry[i-1][j-1]; } }
最后输出即可。
完整代码:
#include<stdio.h> int main() { int arry[10][10]; int i,j; for(i=0;i<10;i++) { arry[i][0]=1; arry[i][i]=1; } for(i=2;i<10;i++) { for(j=1;j<i;j++) { arry[i][j]=arry[i-1][j]+arry[i-1][j-1]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++){ printf("%d ",arry[i][j]); } printf("\n"); } return 0; }