代码
#include <stdio.h>
#define Max 17
//这里默认设置最大打印十七行个元素
int main()
{
int i, j;
while (x < 1 || x>Max)
{
printf("请输入行数:");
scanf("%d", &x);
//输入行数
if (x < 1 || x>Max)
{
printf("输入错误请重新输入,");
}
//进行错误提示
}
int a[100][100] = {0};
//初始化数组
for (i = 0; i < 10; i++)
{
a[i][0] = 1;
a[i][i] = 1;
}
//这一步把每一行的第一个元素和最后一个元素给赋值成1
for (i = 2; i < x; i++)
//从第二行开始,每行开始计算存值。
{
for (j = 1;j < i; j++)
//进行每一行值的计算
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
//最核心的一步 来源于杨辉三角的定理
}
}
for (i = 0; i < x; i++)
{
for (j = 0; j <= i; j++)
{
printf("%5d", a[i][j]);
//进行每行每个元素的打印
}
printf("\n");
//打印完一行后换行
}
return 0;
}
运行截图
但是这样的三角形还不是我们想要的完美类型,
进行调整
for (i = 0; i < x; i++)
{
for (int k = 0; k < 20 - 3* i ; k++)
{
printf(" ");
}
//与之前的代码相比,新增了上面的一行for循环
//这一行用于打印前面的空格,然后空格数按行数呈等差数列递减
//修改20可以实现数据前打印空格的数量
//修改3可以修改每行数据相对于下一行的远近
for (j = 0; j <= i; j++)
{
printf("%6d", a[i][j]);
//这里要用%6d来保证对齐
//进行每行每个元素的打印
}
printf("\n");
//打印完一行后换行
}
结果截图
END