#include<stdio.h>
/*
函数作用:将数组全部初始化成零
*杨辉三角可以看做是每个数字等于上一行的左右两个数字之和,所以可以将其看做是n行2n+1列的二维数组
*/
void Init(int a[100][100], int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < (2 * n) + 1; j++)
printf("%d ", a[i][j] = 0);
printf("\n");
}
}
/*
函数作用:打印经过设计后的杨辉三角
*/
void put(int a[100][100], int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < 2 * n + 1; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
}
//打印最终的杨辉三角
void put_f(int a[100][100], int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < 2 * n + 1; j++)
{
if (a[i][j] == 0)//将数组中含0的元素转换成空格输出
printf(" ");
else
printf("%d ", a[i][j]);
}
printf("\n");
}
}
/*
函数作用:设计杨辉三角
*/
void sork(int a[100][100], int n)
{
int i = 0;
int j = 0;
int col = 0;
a[0][n] = 1;//杨辉三角第一行最中间的数为1
for (i = 1; i < n; i++)
{
col = 0;
for (j = 0; j <= i; j++)//第n行有n个数
{
a[i][n + col - i] = a[i - 1][n + col - i - 1] + a[i - 1][n + col - i + 1];//每个数字等于上一行的左右两个数字之和
col = col + 2;//每行每个数之间下标差为2
}
}
}
int main()
{
int n = 0;
int i = 0;
int j = 0;
int a[100][100];
int col = 0;
printf("请输入一个数:");
scanf("%d", &n);
Init(a, n);
sork(a, n);
printf("请输出:\n");
put(a, n);
printf("请输出杨辉三角:\n");
put_f(a, n);
system("pause");
return 0;
}
在屏幕上打印杨辉三角
最新推荐文章于 2022-02-12 12:20:14 发布