在标准输出上按照如下格式打印杨辉三角形的前K(<=9)行:
1
1 1
1 2 1
... ... ... ...
输入:从键盘读入一正数K
输出:完全对称的杨辉三角形。
#include<stdio.h>
void printYangHui();
int main()
{
printYangHui();//
return 0;
}
void printYangHui()//按行数打印杨辉三角
{
int rows, coef = 1, space, i, j;
printf("行数: ");
scanf("%d",&rows);
//控制行数
for(i=0; i<rows; i++)
{
//打印空格
for(space=1; space <= rows-i; space++)
printf(" ");
//
for(j=0; j <= i; j++)//第n行的数字有n项,所以j<=i
{
//第一行为1,第一列为1
if (j==0 || i==0)
coef = 1;
else
coef = coef*(i-j+1)/j;//这个公式太巧妙了吧
printf("%4d", coef);
}
printf("\n");
}
}
一般方法:
#include <stdio.h>
int const maxn = 9;
int matrix[maxn][maxn] = {0};
int main(void)
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++)//第一列全部置一
{
matrix[i][0] = 1;
}
for(int i = 1; i < n; i++)//得到其余数字
{
for(int j = 1; j <= i; j++)
{
matrix[i][j] = matrix[i - 1][j - 1] + matrix[i - 1][j];
}
}
for(int i = 0; i < n; i++)//输出
{
for(int k = 0; k < n - i - 1; k++)
{
printf(" ");
}
for(int j = 0; j <= i; j++)
{
printf("%3d ",matrix[i][j]);
}
printf("\n");
}
return 0;
}