题目
输出n行以内的杨辉三角,如图
**注意:**每行相邻整数之间都是由空格分隔开的
知识补充
杨辉三角:它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。如图:
解题思路
1、定义一个二维数组来存储这个三角 2、观察三角样貌,它是对称的,所以可以令构成三角的二位数组的两边初始为1 3、中间部分:每个数字都是上面两个数字的和 4、空格:可以看到只有相邻数字之间才有空格,其实就代表着只要每行输出到最后一个数字时不输出空格即可。
代码如下
#include<stdio.h>
#define N 10
int main(void)
{
int i, j, a[N][N];
for (i = 0; i < N; i++)
{
a[i][0] = a[i][i] = 1;
}
for (i = 2; i < N; i++)
{
for (j = 1; j < i; j++)
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < i+1; j++)
{
if (j == i)
printf("%d", a[i][j]);
else
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
|