题目:在屏幕上打印杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
解题思路:二维数组的使用;其每一行的第一个数(arr[i][0])和最后一个数(arr[i][i])输出都是1;其余数字则为第
i-1行j-1列的数字加上i-1行j列数字之和(即arr[i-1][j-1]+arr[i-1][j]);每行的输出需注意空格的输出:例如,要输出5行杨辉三角,则第一行数字1前需输入4个空格字符(5-1),依次类推,输入k行杨辉三角,每行输入的空格字符数应为k-i。
示意图:
函数实现:
void angel(int k)
{
int i,j,a[10][10];
for(i=0;i<k;i++)
{
a[i][0]=1;
a[i][i]=1; //每行第一个和最后一个数
}
for(i=2;i<k;i++)
{
for(j=1;j<i;j++) //每行的数
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<k;i++)
{
for(j=0;j<k-i;j++) //打印杨辉三角
{
printf(" ");
}
for(j=0;j<=i;j++)
{
printf("%6d",a[i][j]);
}
printf("\n");
}
}
int main()
{
int n=0;
int i=0;
printf("请输入打印的行数:>");
scanf("%d",&n);
angel(n);
return 0;
}
运行结果: