一、问题:输入n行打印:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
解析:
第一行是1,每行的第一个数字是1;其余的每个数字是第n-1行的第j-1列加上第j列的和。
步骤:
1、定义二维数组初始化为零。
2、求第j-1列加上第j列的和。
3、打印输出。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
//初始化数组
for(int j=0;j<n;j++){
for(int i=0;i<n;i++){
a[j][i]=0;
}
}
a[0][0]=1;
for(int i=1;i<n;i++){
for(int j=0;j<=i;j++){
if(j==0)
a[i][j]=1;//是第一列就设为一
else
a[i][j]=a[i-1][j-1]+a[i-1][j];//上一行的j-1列与j列的和
}
}
//打印输出
for(int j=0;j<n;j++){
for(int i=0;i<=j;i++){
if(i==j)
printf("%d",a[j][i]);
else
printf("%d ",a[j][i]);
}
printf("\n");
}
return 0;
}