C语言:杨辉三角

题目

输出n行以内的杨辉三角,如图
C语言:杨辉三角_第1张图片

**注意:**每行相邻整数之间都是由空格分隔开的

知识补充

杨辉三角:它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。如图:
C语言:杨辉三角_第2张图片

解题思路

1、定义一个二维数组来存储这个三角
2、观察三角样貌,它是对称的,所以可以令构成三角的二位数组的两边初始为1
3、中间部分:每个数字都是上面两个数字的和
4、空格:可以看到只有相邻数字之间才有空格,其实就代表着只要每行输出到最后一个数字时不输出空格即可。

代码如下

//杨辉三角
#include
#define N 10
int main(void)
{
	int i, j, a[N][N];

	//令两边的数都为1
	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;
}

你可能感兴趣的:(C语言题集,c语言)